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:
parent
10d4b6b335
commit
6412a308e8
20
Dockerfile
Normal file
20
Dockerfile
Normal 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"]
|
Loading…
Reference in New Issue
Block a user