Go モジュールを使用して依存関係を手動で取得する
Go モジュールベースの依存関係管理の世界では、go build や go install などの Go コマンドが自動的に実行されます。必要な依存関係を取得してインストールします。ただし、バイナリ ビルドで Docker を使用する場合は、依存関係のインストールを別のステージに抽出して、キャッシュを利用してビルドのパフォーマンスを最適化することが有益であることがよくあります。
手動依存関係取得のソリューション
Go バージョン 1.11 ではモジュール サポートが導入されましたが、それに伴い依存関係を手動で取得できないという制限がありました。ただし、この問題は問題 #26610 の修正により解決されました。
現在、次のコマンドを使用して依存関係を手動で簡単に取得できます。
go mod download
このコマンドに必要なのは go だけです。 mod および go.sum ファイルが機能します。
Docker の例ビルド
多段階 Docker ビルドでキャッシュされた依存関係のダウンロードを実装する方法の例を次に示します。
# Stage 1: Build dependencies FROM golang:1.17-alpine AS builder RUN apk --no-cache add ca-certificates git WORKDIR /build COPY go.mod go.sum ./ RUN go mod download # Stage 2: Build app COPY . ./ RUN CGO_ENABLED=0 go build # Stage 3: Create final image FROM alpine WORKDIR / COPY --from=builder /build/myapp . EXPOSE 8080 CMD ["/myapp"]
追加の最適化
の場合さらにパフォーマンスを向上させるには、「Go 開発者環境のコンテナ化 –」で説明されているように Go コンパイラー キャッシュを調べることを検討してください。パート 2."
以上が最適化された Docker ビルドの Go モジュールの依存関係を手動でダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。