【发布时间】:2017-01-09 18:21:03
【问题描述】:
我想将我的 golang 单元测试封装在一个 docker-compose 脚本中,因为它依赖于几个外部服务。我的应用有很多依赖,所以go get需要一段时间。
如何以一种允许构建 docker 容器的方式缓存包,而无需在每次我想测试时下载所有依赖项?
我的 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 中即可。 -
您可能对dobi 感兴趣,将其作为运行此类任务的一种方式。 Compose 更多地是为运行服务而设计的,而 dobi 则专注于这些类型的构建任务。
标签: unit-testing go docker docker-compose