diff --git a/Dockerfile.alpine b/Dockerfile.alpine index 2e134ab5e..43eac8ca7 100644 --- a/Dockerfile.alpine +++ b/Dockerfile.alpine @@ -1,37 +1,22 @@ # Build stage FROM node:22.14.0-alpine AS builder -# Configure build dependencies -RUN apk add --no-cache --virtual .build-dependencies \ - autoconf \ - automake \ - g++ \ - gcc \ - libtool \ - make \ - nasm \ - libpng-dev \ - python3 - -WORKDIR /usr/src/app +WORKDIR /usr/src/app/build # Copy only necessary files for build COPY . . # Build and cleanup in a single layer -RUN sed -i "/electron/d" package.json && \ - cp build/docker_healthcheck.js . && \ - rm docker_healthcheck.ts && \ - npm install && \ - npm run build:webpack && \ - npm prune --omit=dev && \ +RUN npm ci && \ + npm run build:prepare-dist && \ npm cache clean --force && \ - cp -r src/public/app/doc_notes src/public/app-dist/. && \ - rm -rf src/public/app && \ - mkdir -p src/public/app/services && \ - cp -r build/src/public/app/services/mime_type_definitions.js src/public/app/services/mime_type_definitions.js && \ - rm src/services/asset_path.ts && \ - rm -r build + mv dist/* \ + start-docker.sh \ + package-lock.json \ + /usr/src/app/ && \ + rm -rf /usr/src/app/build + +#TODO: move package-lock copying into copy-dist # Runtime stage FROM node:22.14.0-alpine @@ -41,17 +26,11 @@ RUN apk add --no-cache su-exec shadow WORKDIR /usr/src/app -# Copy only necessary files from builder -COPY --from=builder /usr/src/app/node_modules ./node_modules -COPY --from=builder /usr/src/app/src ./src -COPY --from=builder /usr/src/app/db ./db -COPY --from=builder /usr/src/app/docker_healthcheck.js . -COPY --from=builder /usr/src/app/start-docker.sh . -COPY --from=builder /usr/src/app/package.json . -COPY --from=builder /usr/src/app/config-sample.ini . -COPY --from=builder /usr/src/app/images ./images -COPY --from=builder /usr/src/app/translations ./translations -COPY --from=builder /usr/src/app/libraries ./libraries +COPY --from=builder /usr/src/app ./ + +RUN sed -i "/electron/d" package.json && \ + npm ci --omit=dev && \ + npm cache clean --force # Add application user RUN adduser -s /bin/false node; exit 0