ホームページ >バックエンド開発 >Golang >Docker ビルドを高速化するために Go の依存関係を手動で取得するにはどうすればよいですか?

Docker ビルドを高速化するために Go の依存関係を手動で取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-15 16:29:10188ブラウズ

How Can I Manually Fetch Go Dependencies for Faster Docker Builds?

Go での手動依存関係フェッチ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。