Go プログラミング環境では、通常、go ツールは依存関係の管理とインストールを自動的に処理します。ただし、最適化された Docker イメージ ビルドの場合、依存関係のインストールを個別の段階として分離すると有益な場合があります。
Go 1.11 以前のバージョンでは、専用のコマンドがないため、これは不可能でした。ただし、問題 #26610 の修正により go mod download コマンドが導入されました。
最適化された Docker ビルドにこのコマンドを利用するには:
これは Docker マルチステージの例です。レイヤー キャッシュを使用してビルド:
FROM golang:1.17-alpine as builder RUN apk --no-cache add ca-certificates git WORKDIR /build # Fetch dependencies COPY go.mod go.sum ./ RUN go mod download # Build COPY . ./ RUN CGO_ENABLED=0 go build # Create final image FROM alpine WORKDIR / COPY --from=builder /build/myapp . EXPOSE 8080 CMD ["/myapp"]
依存関係のインストールを分離すると、Docker を活用できるようになります通常、多くのコード変更は依存関係に影響を与えないため、レイヤー キャッシュの削減により、リビルドがより効率的になります。
さらに、記事「Go 開発者環境のコンテナ化 – パート 2」で説明されているように、Go コンパイラ キャッシュを活用してさらに高速化することを検討してください。ビルド時間。
以上が手動の依存関係取得で Go Docker ビルドを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。