From bf39323b71afe95229ddd75e9d44949f7b64f26f Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Tue, 18 Apr 2023 18:51:30 +0200 Subject: [PATCH] Update Dockerfile --- Dockerfile | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index eec97de..a8a8255 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,35 @@ -FROM techknowlogick/xgo as build +# Set the default Go version as a build argument +ARG XGO="go-1.20.x" +# Use xgo (a Go cross-compiler tool) as the base image +FROM --platform=$BUILDPLATFORM techknowlogick/xgo:${XGO} as build + +# Set the working directory to /workspace and copy the source code WORKDIR /workspace - COPY . . -RUN CGO_ENABLED=1 go build -tags 'sqlite sqlite_unlock_notify netgo' -ldflags '-s -w -extldflags "-static" -linkmode external' . +# Set the target architecture (can be set using --build-arg), buildx set it automatically +ARG TARGETOS TARGETARCH + +# Build the binary using xgo +RUN --mount=type=cache,target=/root/.cache/go-build \ + --mount=type=cache,target=/go/pkg \ + GOOS=${TARGETOS} GOARCH=${TARGETARCH} CGO_ENABLED=1 \ + go build -tags 'sqlite sqlite_unlock_notify netgo' -ldflags '-s -w -extldflags "-static" -linkmode external' . + +# Use a scratch image as the base image for the final container, +# which will contain only the built binary and the CA certificates FROM scratch + +# Copy the built binary and the CA certificates from the build container to the final container COPY --from=build /workspace/pages /pages COPY --from=build \ /etc/ssl/certs/ca-certificates.crt \ /etc/ssl/certs/ca-certificates.crt +# Expose ports 80 and 443 for the built binary to listen on +EXPOSE 80/tcp +EXPOSE 443/tcp + +# Set the entrypoint for the container to the built binary ENTRYPOINT ["/pages"]