From d149457b3c013f09d9bbb12f7ed4837fe340831c Mon Sep 17 00:00:00 2001 From: zertrin Date: Sun, 25 Oct 2020 20:19:23 +0800 Subject: [PATCH] Update Dockerfiles - added wget to debian images (it was removed from the node base image, see https://github.com/nodejs/docker-node/issues/1185) - resynchronized the standalone Dockerfile with the one used for builds - apt install without recommended packages - clean apt cache after install to reduce image size a bit --- docker/alpine/Dockerfile.build | 4 +- docker/debian-stretch/Dockerfile.build | 13 ++-- .../debian-stretch/selfcontained/Dockerfile | 59 +++++++++++-------- 3 files changed, 41 insertions(+), 35 deletions(-) diff --git a/docker/alpine/Dockerfile.build b/docker/alpine/Dockerfile.build index 454561ab..58f0fc3e 100644 --- a/docker/alpine/Dockerfile.build +++ b/docker/alpine/Dockerfile.build @@ -14,7 +14,7 @@ RUN mkdir -p /app/data/config && \ #-----------------MAIN-------------------- #----------------------------------------- -FROM node:12-alpine3.11 as main +FROM node:12-alpine3.11 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) @@ -24,7 +24,6 @@ ENV NODE_ENV=production \ # flagging dockerized environemnt PI_DOCKER=true - EXPOSE 80 RUN apk add --update-cache --repository https://alpine.global.ssl.fastly.net/alpine/v3.11/community/ \ vips ffmpeg @@ -34,7 +33,6 @@ 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"] diff --git a/docker/debian-stretch/Dockerfile.build b/docker/debian-stretch/Dockerfile.build index e06da8ac..a765a585 100644 --- a/docker/debian-stretch/Dockerfile.build +++ b/docker/debian-stretch/Dockerfile.build @@ -12,7 +12,7 @@ RUN mkdir -p /app/data/config && \ #-----------------MAIN-------------------- #----------------------------------------- -FROM node:12-stretch-slim as main +FROM node:12-stretch-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) @@ -22,14 +22,11 @@ ENV NODE_ENV=production \ # flagging dockerized environemnt PI_DOCKER=true -# after a extensive job (like video converting), pigallery calls gc, to clean up everthing as fast as possible -# This trick is needed as entrypoint in exec form does not support ENV variables -# and in shell form ENV variables were not properly passed to pigallry2 -#RUN echo -e '#!/bin/bash \n node ./src/backend/index --expose-gc --config-path=${CONFIG_FILE}' > ./entrypoint.sh && \ -# chmod +x ./entrypoint.sh - EXPOSE 80 -RUN apt-get update && apt-get install -y ffmpeg +RUN apt-get update \ + && apt-get install -y --no-install-recommends ca-certificates wget ffmpeg \ + && apt-get clean -q -y \ + && rm -rf /var/lib/apt/lists/* COPY --from=builder /app /app VOLUME ["/app/data/config", "/app/data/db", "/app/data/images", "/app/data/tmp"] HEALTHCHECK --interval=40s --timeout=30s --retries=3 --start-period=60s \ diff --git a/docker/debian-stretch/selfcontained/Dockerfile b/docker/debian-stretch/selfcontained/Dockerfile index cb37e22c..46da3b28 100644 --- a/docker/debian-stretch/selfcontained/Dockerfile +++ b/docker/debian-stretch/selfcontained/Dockerfile @@ -1,32 +1,43 @@ -FROM node:12-stretch AS BUILDER +#-----------------BUILDER----------------- +#----------------------------------------- +FROM node:12-stretch AS builder # LABEL maintainer="Patrik J. Braun" # copying only package{-lock}.json to make node_modules cachable RUN git clone https://github.com/bpatrik/pigallery2.git /build WORKDIR /build -RUN set -x && npm install --unsafe-perm && \ - mkdir -p /build/release/data/config && \ - mkdir -p /build/release/data/db && \ - mkdir -p /build/release/data/images && \ - mkdir -p /build/release/data/tmp && \ - npm run create-release && \ - cd /build/release && npm install --unsafe-perm +RUN npm install --unsafe-perm \ + && mkdir -p /build/release/data/config \ + && mkdir -p /build/release/data/db \ + && mkdir -p /build/release/data/images \ + && mkdir -p /build/release/data/tmp \ + && npm run create-release \ + && cd /build/release \ + && npm install --unsafe-perm - -FROM node:12-stretch-slim +#-----------------MAIN-------------------- +#----------------------------------------- +FROM node:12-stretch-slim AS main WORKDIR /app ENV NODE_ENV=production \ - CONFIG_FILE=/app/data/config/config.json \ - Server-Database-dbFolder=/app/data/db \ - Server-Media-folder=/app/data/images \ - Server-Media-tempFolder=/app/data/tmp -ENTRYPOINT ["npm", "start", "--", \ - # after a extensive job (like video converting), pigallery calls gc, to clean up everthing as fast as possible - "--expose-gc", \ - "--config-path=$CONFIG_FILE"] -EXPOSE 80 -COPY --from=BUILDER /build/release /app -VOLUME ["/app/data/config", "/app/data/db", "/app/data/images", "/app/data/tmp"] -HEALTHCHECK --interval=30s --timeout=10s --retries=4 --start-period=60s \ - CMD wget --quiet --tries=1 --no-check-certificate --spider \ - http://localhost:80 || exit 1 + # overrides only the default value of the settings (the actualy value can be overwritten through config.json) + default-Server-Database-dbFolder=/app/data/db \ + default-Server-Media-folder=/app/data/images \ + default-Server-Media-tempFolder=/app/data/tmp \ + # flagging dockerized environemnt + PI_DOCKER=true + +EXPOSE 80 +RUN apt-get update \ + && apt-get install -y --no-install-recommends ca-certificates wget ffmpeg \ + && apt-get clean -q -y \ + && rm -rf /var/lib/apt/lists/* +COPY --from=builder /build/release /app +VOLUME ["/app/data/config", "/app/data/db", "/app/data/images", "/app/data/tmp"] +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"]