1
0

Add Dockerfile

The dockerfile is used both as the dev container as well as the
production container. The production container is built with only the
executable binary and dependencies.
This commit is contained in:
Tony Grosinger 2022-12-06 08:34:49 -08:00
parent 10d4b6b335
commit 6412a308e8

20
Dockerfile Normal file
View File

@ -0,0 +1,20 @@
FROM docker.io/library/golang:1.19-bullseye as dev
FROM dev as intermediate
COPY . /build
WORKDIR /build
RUN go build -o doddns && \
ldd doddns | tr -s '[:blank:]' '\n' | grep '^/' | \
awk '{printf("%s\n", $1); system("readlink -f " $1)}' | \
xargs -I % sh -c 'mkdir -p $(dirname deps%); cp % deps%;'
FROM scratch as prod
COPY --from=intermediate /build/deps /
COPY --from=intermediate /build/doddns /doddns
COPY --from=intermediate /etc/ssl/certs/* /etc/ssl/certs/
COPY --from=intermediate /usr/share/ca-certificates /usr/share/ca-certificates
WORKDIR /
ENTRYPOINT ["/doddns"]