LoginSignup
0
0

distrolessの利用には依存関係に気をつけよう

Last updated at Posted at 2023-11-15
FROM amd64/golang:1.18 AS builder

ENV PROJECT xxx/xxxx/batch
WORKDIR /go/src/$PROJECT

# restore dependencies
COPY go.* ./
RUN go mod download

COPY . .
RUN go build -o /batch

FROM gcr.io/distroless/static AS release
WORKDIR /
COPY --from=builder /batch /batch
USER nonroot:nonroot
ENTRYPOINT ["/batch"]

というようなDockerのマルチステージビルドをして、生成物も出力されているのに、ENTRYPOINTを実行すると
terminated: Application failed to start: "/batch": no such file or directory
ファイルは確かにそこにあるのに、ファイルが見つからないという不思議なエラーになりました。
原因は、RUN CGO_ENABLED=0 go build -o /batchのCGO_ENABLED=0のフラグのつけ忘れでした
distrolessのイメージは無駄なものをそぎ落としすぎており、共有ライブラリが足りない時があるので、このフラグをつけて生成されるバイナリが完全に静的であること、つまり共有ライブラリに依存しないようにする必要があるとのことでした

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0