satococoa's blog

主にサーバーサイド、Web 系エンジニアのブログです。Go, Ruby, React, GCP, ...etc.

Private module を含む go サーバの Dockerfile

FROM golang as builder
ENV GOFLAGS=-mod=vendor
WORKDIR /work
COPY go.* ./
RUN go mod download
COPY . ./
RUN CGO_ENABLED=0 GOOS=linux go build -mod=readonly -v -o app

FROM alpine:latest
RUN apk --no-cache add ca-certificates
COPY --from=builder /work/app /app
CMD ["/app"]

事前に go mod vendor しておき、 ENV GOFLAGS=-mod=vendor を付与することで private リポジトリを get しようとしない。

参考: github.com