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

最適化された Docker ビルドの Go モジュールの依存関係を手動でダウンロードするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-09 19:29:11302ブラウズ

How Can I Manually Download Go Module Dependencies for Optimized Docker Builds?

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

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