Switched to hyper-minimal Docker image

master
Jef Roosens 2021-07-19 20:46:16 +02:00
parent acf5baaad5
commit 06f6f969df
Signed by: Jef Roosens
GPG Key ID: 955C0660072F691F
2 changed files with 28 additions and 18 deletions

View File

@ -1,24 +1,38 @@
# Global build argument # Global build argument
ARG THTTPD_VER=2.29 ARG THTTPD_VER=2.29
ARG DI_VER=1.2.5
FROM alpine:latest AS builder FROM ubuntu:latest AS builder
# =====BUILD thttpd===== # =====BUILD BINARIES=====
WORKDIR /usr/src WORKDIR /usr/src
ARG THTTPD_VER ARG THTTPD_VER
ARG DI_VER
# Install dependencies & build thttpd # Install dependencies & build thttpd
RUN apk update && \ RUN apt update && \
apk add --no-cache curl hugo build-base && \ apt install -y --no-install-recommends \
curl \
ca-certificates \
hugo \
musl-dev \
musl-tools \
build-essential && \
curl -sSL "https://www.acme.com/software/thttpd/thttpd-$THTTPD_VER.tar.gz" | \ curl -sSL "https://www.acme.com/software/thttpd/thttpd-$THTTPD_VER.tar.gz" | \
tar xzf - && \ tar xzf - && \
cd "thttpd-$THTTPD_VER" && \ cd "thttpd-$THTTPD_VER" && \
CFLAGS="-O3 -static" ./configure && \ CC="musl-gcc -static" ./configure && \
make -j$(nproc) make -j$(nproc)
# Build dumb-init
RUN curl -sSL "https://github.com/Yelp/dumb-init/archive/refs/tags/v$DI_VER.tar.gz" | \
tar xzf - && \
cd "dumb-init-$DI_VER" && \
CC="musl-gcc -static" make build
# =====BUILD THE BLOG=====
# =====BUILD BLOG=====
WORKDIR /usr/src/app WORKDIR /usr/src/app
# Copy site files for building # Copy site files for building
@ -29,22 +43,18 @@ RUN hugo --minify
# ====CREATE RELEASE IMAGE==== # ====CREATE RELEASE IMAGE====
FROM alpine:latest FROM scratch
ARG THTTPD_VER ARG THTTPD_VER
ARG DI_VER
# Install dumb-init & create a non-root user
RUN apk update && \
apk add --no-cache dumb-init
# addgroup -g 82 -S www-data && \
# adduser -u 82 -D -S -G www-data www-data
# Copy over binary & static files # Copy over binary & static files
COPY --from=builder /usr/src/thttpd-$THTTPD_VER/thttpd /usr/local/bin/thttpd COPY --from=builder /usr/src/thttpd-$THTTPD_VER/thttpd /bin/thttpd
COPY --from=builder /usr/src/app/public /var/www/html COPY --from=builder /usr/src/dumb-init-$DI_VER/dumb-init /bin/dumb-init
COPY --from=builder /usr/src/app/public /static
COPY thttpd.conf /etc/thttpd.conf COPY thttpd.conf /etc/thttpd.conf
# A static file server doesn't need root # A static file server doesn't need root
USER 82:82 USER 82:82
ENTRYPOINT [ "dumb-init", "--" ] ENTRYPOINT [ "/bin/dumb-init", "--" ]
CMD [ "/usr/local/bin/thttpd", "-D", "-C", "/etc/thttpd.conf" ] CMD [ "/bin/thttpd", "-D", "-C", "/etc/thttpd.conf" ]

View File

@ -1,2 +1,2 @@
port=8080 port=8080
dir=/var/www/html dir=/static