From a54d4ff62de8088cc8f7c58b281eb894150ee368 Mon Sep 17 00:00:00 2001 From: xuthus Date: Sat, 6 Jul 2024 23:02:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/build.yaml | 2 +- Dockerfile.build | 82 ++++++++++++++++++------------------- 2 files changed, 41 insertions(+), 43 deletions(-) diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 2809016e..9bed9aad 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -28,6 +28,6 @@ jobs: uses: docker/build-push-action@v5 with: context: ./ - file: ./Dockerfile.build + file: Dockerfile.build push: true tags: k2.xuthus83.cn:6001/pigallery2:latest diff --git a/Dockerfile.build b/Dockerfile.build index 34cd1c7e..917e1c87 100644 --- a/Dockerfile.build +++ b/Dockerfile.build @@ -1,44 +1,42 @@ #-----------------BUILDER----------------- #----------------------------------------- - 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 imagemagick-dev libraw-dev vips-dev vips-heif vips-magick fftw-dev gcc g++ make libc6-compat && ln -snf /usr/bin/python3 /usr/bin/python - COPY pigallery2-release /app - WORKDIR /app - RUN npm install --unsafe-perm --fetch-timeout=90000 - RUN mkdir -p /app/data/config && \ - mkdir -p /app/data/db && \ - mkdir -p /app/data/images && \ - mkdir -p /app/data/tmp - - - #-----------------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 apk add --update-cache --repository https://alpine.global.ssl.fastly.net/alpine/v3.17/community/ \ - vips vips-cpp vips-heif vips-magick 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", "--Server-Log-level=silly"] - HEALTHCHECK --interval=40s --timeout=30s --retries=3 --start-period=60s \ - CMD wget --quiet --tries=1 --no-check-certificate --spider \ - http://127.0.0.1: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 - ENTRYPOINT ["node", "./src/backend/index", "--expose-gc", "--config-path=/app/data/config/config.json"] - - \ No newline at end of file +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 +RUN mkdir -p /app/data/config && \ + mkdir -p /app/data/db && \ + mkdir -p /app/data/images && \ + mkdir -p /app/data/tmp + + +#-----------------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 \ + # flagging dockerized environemnt + PI_DOCKER=true + +EXPOSE 80 +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 + +# 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 +ENTRYPOINT ["node", "./src/backend/index", "--expose-gc", "--config-path=/app/data/config/config.json"] +