From 70f1030de8f619f702ae5a9025ea2b5210033485 Mon Sep 17 00:00:00 2001 From: "Patrik J. Braun" Date: Fri, 20 Dec 2019 19:20:14 +0100 Subject: [PATCH] adding buildx dockerfiles --- docker/README.md | 2 +- .../Dockerfile => alpine/Dockerfile.build} | 24 ++++------ docker/arm32v6/alpine/Dockerfile | 46 ------------------- docker/arm32v6/alpine/hooks/pre_build | 4 -- docker/arm32v7/alpine/Dockerfile | 46 ------------------- docker/arm32v7/alpine/hooks/pre_build | 4 -- docker/arm32v7/debian-stretch/Dockerfile | 46 ------------------- docker/arm32v7/debian-stretch/hooks/pre_build | 4 -- .../Dockerfile.build} | 22 ++++----- .../debian-stretch/selfcontained/Dockerfile | 0 10 files changed, 18 insertions(+), 180 deletions(-) rename docker/{amd64/alpine/Dockerfile => alpine/Dockerfile.build} (56%) delete mode 100644 docker/arm32v6/alpine/Dockerfile delete mode 100644 docker/arm32v6/alpine/hooks/pre_build delete mode 100644 docker/arm32v7/alpine/Dockerfile delete mode 100644 docker/arm32v7/alpine/hooks/pre_build delete mode 100644 docker/arm32v7/debian-stretch/Dockerfile delete mode 100644 docker/arm32v7/debian-stretch/hooks/pre_build rename docker/{amd64/debian-stretch/Dockerfile => debian-stretch/Dockerfile.build} (58%) rename docker/{amd64 => }/debian-stretch/selfcontained/Dockerfile (100%) diff --git a/docker/README.md b/docker/README.md index d35ad19e..637b317a 100644 --- a/docker/README.md +++ b/docker/README.md @@ -42,4 +42,4 @@ You do not need the `/sqlite.db` line if you don't ### Build the Docker image on your own - You can clone the repository and build the image, or you can just use the 'self-contained' Dockerfile: [debian/stretch/selfcontained/Dockerfile](amd64/debian-stretch/selfcontained/Dockerfile) + You can clone the repository and build the image, or you can just use the 'self-contained' Dockerfile: [debian-stretch/selfcontained/Dockerfile](debian-stretch/selfcontained/Dockerfile) diff --git a/docker/amd64/alpine/Dockerfile b/docker/alpine/Dockerfile.build similarity index 56% rename from docker/amd64/alpine/Dockerfile rename to docker/alpine/Dockerfile.build index 5763ed32..38cc34a2 100644 --- a/docker/amd64/alpine/Dockerfile +++ b/docker/alpine/Dockerfile.build @@ -1,23 +1,18 @@ FROM node:12-alpine AS builder -RUN apk add python build-base -# copying only package{-lock}.json to make node_modules cachable -COPY package*.json /build/ +RUN apk add python build-base sqlite-dev sqlite-libs vips-dev +COPY pigallery2-release /build WORKDIR /build -RUN set -x && npm install --unsafe-perm -# build app -COPY . /build -RUN 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 +RUN mkdir -p /build/data/config && \ + mkdir -p /build/data/db && \ + mkdir -p /build/data/images && \ + mkdir -p /build/data/tmp && \ npm start -- --config-only --force-rewrite-config \ --config-path=data/config/config.json \ --Server-Database-sqlite-storage='data/db/sqlite.db' \ --Server-Database-memory-usersFile='data/db/users.db' \ --Server-Media-folder='data/images' \ - --Server-Media-tempFolder='data/tmp' || true + --Server-Media-tempFolder='data/tmp' FROM node:12-alpine @@ -25,10 +20,9 @@ WORKDIR /app ENTRYPOINT ["npm", "start"] EXPOSE 80 ENV NODE_ENV=production -COPY --from=builder /build/release /app +COPY --from=builder /build /app RUN ln -s /app/data/config/config.json config.json 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 - diff --git a/docker/arm32v6/alpine/Dockerfile b/docker/arm32v6/alpine/Dockerfile deleted file mode 100644 index f1ac6577..00000000 --- a/docker/arm32v6/alpine/Dockerfile +++ /dev/null @@ -1,46 +0,0 @@ -FROM alpine AS qemu-builder -RUN apk add --no-cache wget && \ - wget https://github.com/multiarch/qemu-user-static/releases/download/v4.1.1-1/x86_64_qemu-arm-static.tar.gz && \ - tar -xvf x86_64_qemu-arm-static.tar.gz - -# separate release builder for faster build on docker hub -FROM node:12-alpine AS node-builder -RUN apk add python build-base -# copying only package{-lock}.json to make node_modules cachable -COPY package*.json /build/ -WORKDIR /build -RUN set -x && npm install --unsafe-perm -# build app -COPY . /build -RUN npm run create-release - -FROM arm32v6/node:12-alpine AS builder -COPY --from=qemu-builder /qemu-arm-static /usr/bin -RUN apk add python build-base -COPY --from=node-builder /build/release /build/release -RUN mkdir -p /build/release/data/config && \ - mkdir -p /build/release/data/db && \ - mkdir -p /build/release/data/images && \ - mkdir -p /build/release/data/tmp && \ - cd /build/release && npm install --unsafe-perm && \ - npm start -- --config-only --force-rewrite-config \ - --config-path=data/config/config.json \ - --Server-Database-sqlite-storage='data/db/sqlite.db' \ - --Server-Database-memory-usersFile='data/db/users.db' \ - --Server-Media-folder='data/images' \ - --Server-Media-tempFolder='data/tmp' || true - - -FROM arm32v6/node:12-alpine -COPY --from=qemu-builder /qemu-arm-static /usr/bin -WORKDIR /app -ENTRYPOINT ["npm", "start"] -EXPOSE 80 -ENV NODE_ENV=production -COPY --from=builder /build/release /app -RUN ln -s /app/data/config/config.json config.json -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 - diff --git a/docker/arm32v6/alpine/hooks/pre_build b/docker/arm32v6/alpine/hooks/pre_build deleted file mode 100644 index 927718e0..00000000 --- a/docker/arm32v6/alpine/hooks/pre_build +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -# Register qemu-*-static for all supported processors except the -# current one, but also remove all registered binfmt_misc before -docker run --rm --privileged multiarch/qemu-user-static:register --reset diff --git a/docker/arm32v7/alpine/Dockerfile b/docker/arm32v7/alpine/Dockerfile deleted file mode 100644 index 6e418801..00000000 --- a/docker/arm32v7/alpine/Dockerfile +++ /dev/null @@ -1,46 +0,0 @@ -FROM alpine AS qemu-builder -RUN apk add --no-cache wget && \ - wget https://github.com/multiarch/qemu-user-static/releases/download/v4.1.1-1/x86_64_qemu-arm-static.tar.gz && \ - tar -xvf x86_64_qemu-arm-static.tar.gz - -# separate release builder for faster build on docker hub -FROM node:12-alpine AS node-builder -RUN apk add python build-base -# copying only package{-lock}.json to make node_modules cachable -COPY package*.json /build/ -WORKDIR /build -RUN set -x && npm install --unsafe-perm -# build app -COPY . /build -RUN npm run create-release - -FROM arm32v7/node:12-alpine AS builder -COPY --from=qemu-builder /qemu-arm-static /usr/bin -RUN apk add python build-base -COPY --from=node-builder /build/release /build/release -RUN mkdir -p /build/release/data/config && \ - mkdir -p /build/release/data/db && \ - mkdir -p /build/release/data/images && \ - mkdir -p /build/release/data/tmp && \ - cd /build/release && npm install --unsafe-perm && \ - npm start -- --config-only --force-rewrite-config \ - --config-path=data/config/config.json \ - --Server-Database-sqlite-storage='data/db/sqlite.db' \ - --Server-Database-memory-usersFile='data/db/users.db' \ - --Server-Media-folder='data/images' \ - --Server-Media-tempFolder='data/tmp' || true - - -FROM arm32v7/node:12-alpine -COPY --from=qemu-builder /qemu-arm-static /usr/bin -WORKDIR /app -ENTRYPOINT ["npm", "start"] -EXPOSE 80 -ENV NODE_ENV=production -COPY --from=builder /build/release /app -RUN ln -s /app/data/config/config.json config.json -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 - diff --git a/docker/arm32v7/alpine/hooks/pre_build b/docker/arm32v7/alpine/hooks/pre_build deleted file mode 100644 index 927718e0..00000000 --- a/docker/arm32v7/alpine/hooks/pre_build +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -# Register qemu-*-static for all supported processors except the -# current one, but also remove all registered binfmt_misc before -docker run --rm --privileged multiarch/qemu-user-static:register --reset diff --git a/docker/arm32v7/debian-stretch/Dockerfile b/docker/arm32v7/debian-stretch/Dockerfile deleted file mode 100644 index 5e0b1cb3..00000000 --- a/docker/arm32v7/debian-stretch/Dockerfile +++ /dev/null @@ -1,46 +0,0 @@ -FROM alpine AS qemu-builder -RUN apk add --no-cache wget && \ - wget https://github.com/multiarch/qemu-user-static/releases/download/v4.1.1-1/x86_64_qemu-arm-static.tar.gz && \ - tar -xvf x86_64_qemu-arm-static.tar.gz - -# separate release builder for faster build on docker hub -FROM node:12-stretch AS node-builder -RUN apk add python build-base -# copying only package{-lock}.json to make node_modules cachable -COPY package*.json /build/ -WORKDIR /build -RUN set -x && npm install --unsafe-perm -# build app -COPY . /build -RUN npm run create-release - -FROM arm32v7/node:12-stretch-slim AS builder -COPY --from=qemu-builder /qemu-arm-static /usr/bin -RUN apk add python build-base -COPY --from=node-builder /build/release /build/release -RUN mkdir -p /build/release/data/config && \ - mkdir -p /build/release/data/db && \ - mkdir -p /build/release/data/images && \ - mkdir -p /build/release/data/tmp && \ - cd /build/release && npm install --unsafe-perm && \ - npm start -- --config-only --force-rewrite-config \ - --config-path=data/config/config.json \ - --Server-Database-sqlite-storage='data/db/sqlite.db' \ - --Server-Database-memory-usersFile='data/db/users.db' \ - --Server-Media-folder='data/images' \ - --Server-Media-tempFolder='data/tmp' || true - - -FROM arm32v7/node:12-alpine -COPY --from=qemu-builder /qemu-arm-static /usr/bin -WORKDIR /app -ENTRYPOINT ["npm", "start"] -EXPOSE 80 -ENV NODE_ENV=production -COPY --from=builder /build/release /app -RUN ln -s /app/data/config/config.json config.json -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 - diff --git a/docker/arm32v7/debian-stretch/hooks/pre_build b/docker/arm32v7/debian-stretch/hooks/pre_build deleted file mode 100644 index 927718e0..00000000 --- a/docker/arm32v7/debian-stretch/hooks/pre_build +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -# Register qemu-*-static for all supported processors except the -# current one, but also remove all registered binfmt_misc before -docker run --rm --privileged multiarch/qemu-user-static:register --reset diff --git a/docker/amd64/debian-stretch/Dockerfile b/docker/debian-stretch/Dockerfile.build similarity index 58% rename from docker/amd64/debian-stretch/Dockerfile rename to docker/debian-stretch/Dockerfile.build index 71648757..953b480a 100644 --- a/docker/amd64/debian-stretch/Dockerfile +++ b/docker/debian-stretch/Dockerfile.build @@ -1,22 +1,17 @@ FROM node:12-stretch AS builder -# copying only package{-lock}.json to make node_modules cachable -COPY package*.json /build/ +COPY pigallery2-release /build WORKDIR /build -RUN set -x && npm install --unsafe-perm -# build app -COPY . /build -RUN 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 +RUN mkdir -p /build/data/config && \ + mkdir -p /build/data/db && \ + mkdir -p /build/data/images && \ + mkdir -p /build/data/tmp && \ npm start -- --config-only --force-rewrite-config \ --config-path=data/config/config.json \ --Server-Database-sqlite-storage='data/db/sqlite.db' \ --Server-Database-memory-usersFile='data/db/users.db' \ --Server-Media-folder='data/images' \ - --Server-Media-tempFolder='data/tmp' || true + --Server-Media-tempFolder='data/tmp' FROM node:12-stretch-slim @@ -24,10 +19,9 @@ WORKDIR /app ENTRYPOINT ["npm", "start"] EXPOSE 80 ENV NODE_ENV=production -COPY --from=builder /build/release /app +COPY --from=builder /build /app RUN ln -s /app/data/config/config.json config.json 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 - diff --git a/docker/amd64/debian-stretch/selfcontained/Dockerfile b/docker/debian-stretch/selfcontained/Dockerfile similarity index 100% rename from docker/amd64/debian-stretch/selfcontained/Dockerfile rename to docker/debian-stretch/selfcontained/Dockerfile