From dadf4a4f5792cf002825d97110123d13339a53e5 Mon Sep 17 00:00:00 2001 From: "Patrik J. Braun" Date: Sun, 23 Nov 2025 11:21:09 +0100 Subject: [PATCH] bookworm v7 try --- .github/workflows/build.yml | 6 ++- docker/debian-bookworm/Dockerfile.build | 59 +++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 docker/debian-bookworm/Dockerfile.build diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7b30ec3a..ed6c775a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -101,12 +101,14 @@ jobs: needs: [ test, create-release ] strategy: matrix: - container: [alpine, debian-trixie ] + container: [alpine, debian-trixie, debian-bookworm] include: - container: alpine - platforms: linux/amd64,linux/arm64, linux/arm/v7 + platforms: linux/amd64,linux/arm64 - container: debian-trixie platforms: linux/amd64,linux/arm64 + - container: debian-bookworm + platforms: linux/amd64,linux/arm64, linux/arm/v7 steps: - name: Checkout diff --git a/docker/debian-bookworm/Dockerfile.build b/docker/debian-bookworm/Dockerfile.build new file mode 100644 index 00000000..d30ebfe3 --- /dev/null +++ b/docker/debian-bookworm/Dockerfile.build @@ -0,0 +1,59 @@ +#-----------------BUILDER----------------- +#----------------------------------------- +FROM node:22-bookworm AS builder + + +ENV SHARP_FORCE_GLOBAL_LIBVIPS=1 + +# inspired by: https://dev.to/ilyasa1211/converting-heic-image-extension-in-nodejs-with-the-sharp-library-39mg +# also see: https://github.com/bpatrik/pigallery2/issues/965 + +# Install build and vips dependencies +RUN apt-get update && apt-get install -y --no-install-recommends curl python3 git build-essential pkg-config \ + libvips-dev && \ + rm -rf /var/lib/apt/lists/* + + +COPY pigallery2-release /app +WORKDIR /app +# building sharp based on debian's vips +RUN npm install --no-package-lock node-addon-api@8.5.0 node-gyp@11.5.0 && \ + mkdir -p /app/data/config && \ + mkdir -p /app/data/db && \ + mkdir -p /app/data/images && \ + mkdir -p /app/data/tmp + +#-----------------MAIN-------------------- +#----------------------------------------- +FROM node:22-bookworm-slim 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 +ARG TARGETARCH +RUN apt-get update \ + && apt-get install -y --no-install-recommends ca-certificates wget ffmpeg libvips42 \ + && if [ "$TARGETARCH" = "amd64" ]; then \ + echo "Building for amd64, adding intel-media-va-driver" && \ + apt-get install -y --no-install-recommends intel-media-va-driver; \ + fi \ + && apt-get clean -q -y \ + && rm -rf /var/lib/apt/lists/* +COPY --from=builder /app /app + +# 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"]