0

go build依存関係が変更されていない限り、Docker でコマンドを取得して、すべてのビルドでモジュール キャッシュまたはベンダー ディレクトリを使用するにはどうすればよいですか?

これらのアプローチの両方を試しましたが、一貫性のない結果が得られました。

Docker コンテナーで go 1.11 モジュールを永続化するにはどうすればよいですか? ^ これは機能しません。Docker の「ビルダー」パターンを使用しているためだと思います。

https://medium.com/@monirz/golang-dependency-solution-with-go-module-and-docker-8967da6dd9f6 ^これは機能するはずですが、何らかの理由で機能しません...

私はサーバーで作業しており、ソースコードに小さな変更を加えるたびに、再コンパイルする必要があるのは理にかなっていますが、そのステップですべての依存関係を再度ダウンロードする必要があるのは理にかなっていませ。毎回。

このサーバーを として構築していますgo module。現在の Dockerfile は次のとおりです。

FROM golang:1.14 AS builder

# Add the source
WORKDIR /app
COPY . .

# Statically compile our app for use in a distroless container
RUN CGO_ENABLED=0 go build -mod vendor -ldflags="-w -s" -v -o app .

# A distroless container image with some basics like SSL certificates
# https://github.com/GoogleContainerTools/distroless
FROM gcr.io/distroless/static

# Copy over binary and words dir
COPY --from=builder /app/app /app

ENTRYPOINT ["/app"]

また、 go コマンドにフラグを追加しようとしました-mod=vendorが、動作は変わりません... 1.14 がモジュールパス (そこにある) でベンダーディレクトリを検出した場合、とにかくそのフラグを自動的に使用する必要があります。

4

1 に答える 1