diff --git a/Dockerfile.build b/Dockerfile.build index aff69ad3..917e1c87 100644 --- a/Dockerfile.build +++ b/Dockerfile.build @@ -1,10 +1,11 @@ #-----------------BUILDER----------------- #----------------------------------------- -FROM node:18.19-bullseye AS builder -RUN apt update && apt install -y --no-install-recommends libvips-dev python3 +FROM node:18-alpine3.17 AS builder +RUN apk add --update-cache --repository https://alpine.global.ssl.fastly.net/alpine/v3.17/community/ \ + python3 build-base sqlite-dev sqlite-libs vips-dev fftw-dev gcc g++ make libc6-compat && ln -snf /usr/bin/python3 /usr/bin/python COPY release /app WORKDIR /app -RUN npm install --unsafe-perm --fetch-timeout=90000 +RUN npm install --unsafe-perm RUN mkdir -p /app/data/config && \ mkdir -p /app/data/db && \ mkdir -p /app/data/images && \ @@ -13,30 +14,27 @@ RUN mkdir -p /app/data/config && \ #-----------------MAIN-------------------- #----------------------------------------- -FROM node:18-bullseye-slim AS main +FROM node:18-alpine3.17 AS main WORKDIR /app ENV NODE_ENV=production \ # overrides only the default value of the settings (the actualy value can be overwritten through config.json) default-Database-dbFolder=/app/data/db \ default-Media-folder=/app/data/images \ default-Media-tempFolder=/app/data/tmp \ - default-Extensions-folder=/app/data/config/extensions \ # flagging dockerized environemnt PI_DOCKER=true EXPOSE 80 -RUN apt-get update \ - && apt-get install -y --no-install-recommends ca-certificates wget ffmpeg libvips42 \ - && apt-get clean -q -y \ - && rm -rf /var/lib/apt/lists/* +RUN apk add --update-cache --repository https://alpine.global.ssl.fastly.net/alpine/v3.17/community/ \ + vips vips-cpp ffmpeg COPY --from=builder /app /app VOLUME ["/app/data/config", "/app/data/db", "/app/data/images", "/app/data/tmp"] # Run build time diagnostics to make sure the app would work after build is finished RUN ["node", "./src/backend/index", "--expose-gc", "--run-diagnostics", "--config-path=/app/diagnostics-config.json"] HEALTHCHECK --interval=40s --timeout=30s --retries=3 --start-period=60s \ - CMD wget --quiet --tries=1 --no-check-certificate --spider \ - http://localhost:80/heartbeat || exit 1 + CMD wget --quiet --tries=1 --no-check-certificate --spider \ + http://localhost:80/heartbeat || exit 1 # after a extensive job (like video converting), pigallery calls gc, to clean up everthing as fast as possible # Exec form entrypoint is need otherwise (using shell form) ENV variables are not properly passed down to the app