# Pin specific version for stability # Use separate stage for building image # Use debian for easier build utilities FROM golang:1.19-bullseye AS build WORKDIR /app # Copy only files required to install dependencies (better layer caching) COPY go.mod go.sum ./ RUN go mod download COPY . . # Compile application during build rather than at runtime # Add flags to statically link binary RUN go build \ -ldflags="-linkmode external -extldflags -static" \ -tags netgo \ -o api-golang # Use separate stage for deployable image FROM scratch # Set gin mode ENV GIN_MODE=release WORKDIR / # Copy the binary from the build stage COPY --from=build /app/api-golang api-golang # Indicate expected port EXPOSE 8080 CMD ["/api-golang"]