私はgolang単体テストをいくつかの外部サービスに依存しているので、ドッカー作成スクリプトでカプセル化したいと思っています。私のアプリケーションにはかなりの依存関係がありますので、しばらくしてgo get
にかかります。ドッカービルドでキャッシュ "go get"
テストするたびにすべての依存関係をダウンロードせずにドッカーコンテナを構築できるようにパッケージをキャッシュする方法を教えてください。
マイDockerfile:
FROM golang:1.7
CMD ["go", "test", "-v"]
RUN mkdir -p /go/src/app
WORKDIR /go/src/app
COPY . /go/src/app
RUN go-wrapper download
RUN go-wrapper install
私は私のユニットテストを実行するたびに、私は次のスクリプトでdocker-compose up --build backend-test
を実行します。
version: '2'
services:
...
backend-test:
build:
context: .
dockerfile: Dockerfile
image: backend-test
depends_on:
...
しかし、今go-wrapper download
は私が実行したいたびに呼び出されますテストが完了するまでには時間がかかります。
ソリューション?前もって感謝します!
依存関係を「キャッシュ」する場合は、それをベンダーディレクトリで実行して、キャッシュしたバージョンを正確に把握してください。 'vendor /'を使いたくない場合は、GOPATHにコピーしてください。 – JimB
この種のタスクを実行する方法として[dobi](http://dnephin.github.io/dobi/)に興味があるかもしれません。 Composeは、dobiがこれらのタイプのビルドタスクに焦点を当てているように、実行中のサービスのためにより多く設計されています。 – dnephin