Go 1.11 で導入された重要な概念の 1 つはモジュール サポートです。依存関係の自動インストール機能は通常は有益ですが、ユースケースによっては手動による依存関係の取得が必要になる場合があります。
たとえば、依存関係の変更がコードの変更よりもはるかに少ない Docker ビルド環境では、Docker のレイヤー キャッシュを活用すると、依存関係のインストール段階をビルド段階から分離することで、リビルドが大幅に高速化されます。
Go は、この課題に対する解決策。問題 #26610 のおかげで、go mod download コマンドを利用して依存関係を手動で取得できるようになりました。このコマンドに必要なのは、go.mod および go.sum ファイルの存在のみです。
この手法を使用した、キャッシュされた多段階 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"]
さらに、この記事「Go 開発者環境のコンテナ化 – パート 2」では、Go コンパイラー キャッシュを活用してビルド速度をさらに向上させるための貴重な洞察を提供します。
以上がDocker ビルドを高速化するために Go の依存関係を手動で取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。