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

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

Barbara Streisand
リリース: 2024-12-10 04:42:12
オリジナル
189 人が閲覧しました

How Can Manual Dependency Fetching Optimize Go Docker Builds?

Docker ビルド最適化のための依存関係を手動で取得する

Go プログラミング環境では、通常、go ツールは依存関係の管理とインストールを自動的に処理します。ただし、最適化された Docker イメージ ビルドの場合、依存関係のインストールを個別の段階として分離すると有益な場合があります。

Go 1.11 以前のバージョンでは、専用のコマンドがないため、これは不可能でした。ただし、問題 #26610 の修正により go mod download コマンドが導入されました。

最適化された Docker ビルドにこのコマンドを利用するには:

  1. 依存関係マニフェストのコピー: go.mod ファイルと go.sum ファイルを Docker イメージのビルドにコピーします。 context.
  2. Run go mod download: Docker ビルド ステージ内で go mod download を実行して、依存関係を手動で取得します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート