go.mod から依存関係を手動で取得しますか? 質問する

go.mod から依存関係を手動で取得しますか? 質問する

私はモジュール サポート付きの go 1.11 を使用しています。go ツールはビルド/インストール時に依存関係を自動的にインストールするようになったと理解しています。その理由も理解しています。

私はバイナリをビルドするために docker を使用しています。他の多くのエコシステムでは、依存関係マニフェスト (package.json、requirements.txt など) をコピーし、ビルドとは別のステージとして依存関係をインストールするのが一般的です。これは docker のレイヤー キャッシュを活用し、一般的にコードの変更が依存関係の変更を大幅に上回るため、再構築がはるかに高速になります。

vgo でこれを行う方法はあるのでしょうか?

ベストアンサー1

それは問題だった#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コンパイラキャッシュビルドをさらに高速化します。

おすすめ記事