From e0c3502676c4e6243bc4cab7932b4d7ad3402b4b Mon Sep 17 00:00:00 2001 From: Brennan Kinney <5098581+polarathene@users.noreply.github.com> Date: Thu, 1 May 2025 14:42:21 +1200 Subject: [PATCH] refactor: Docker (Alpine) improvements 60MB => 38MB (dist-git) or 30MB (dist-local) --- Dockerfile.git | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/Dockerfile.git b/Dockerfile.git index 8e69382..8b5e22e 100644 --- a/Dockerfile.git +++ b/Dockerfile.git @@ -1,24 +1,23 @@ -# Build using git repo - -FROM alpine:3.20 - -WORKDIR /home/testssl - -ARG BUILD_VERSION -ARG ARCHIVE_URL=https://github.com/testssl/testssl.sh/archive/ -ARG URL=https://github.com/testssl/testssl.sh.git - -RUN test -n "${BUILD_VERSION}" \ - && apk update \ - && apk add --no-cache bash procps drill git coreutils libidn curl socat openssl xxd \ - && git clone --depth 1 --branch ${BUILD_VERSION} $URL /home/testssl \ +FROM alpine:3.21 AS base-alpine +RUN apk update \ + && apk add --no-cache bash procps drill coreutils libidn curl socat openssl xxd \ && addgroup testssl \ && adduser -G testssl -g "testssl user" -s /bin/bash -D testssl \ - && ln -s /home/testssl/testssl.sh /usr/local/bin/ \ - && mkdir -m 755 -p /home/testssl/etc /home/testssl/bin + && ln -s /home/testssl/testssl.sh /usr/local/bin/testssl.sh USER testssl - ENTRYPOINT ["testssl.sh"] - CMD ["--help"] + +# Final image stage (add testssl.sh project files) +# Choose either one as the final stage (defaults to last stage, `dist-git`) + +# 30MB Image (Local repo copy from build context, uses `.dockerignore`): +FROM base-alpine AS dist-local +COPY --chown=testssl:testssl . /home/testssl/ + +# 38MB Image (Remote repo clone, cannot filter content through `.dockerignore`): +FROM base-alpine AS dist-git +ARG GIT_URL=https://github.com/testssl/testssl.sh.git +ARG GIT_BRANCH +ADD --chown=testssl:testssl ${GIT_URL}#${GIT_BRANCH?branch-required} /home/testssl