docker-compose找不到包(golang)

我正在写一个简单的应用程序,我有这个文件夹结构

在这里输入图像说明

docker-compose.yml文件的内容是:

version: '2' services: db: image: rethinkdb:latest ports: - "38080:8080" - "38015:28015" - "39015:29015" api: image: golang:1.8-alpine volumes: - .:/go/src/test_server/ working_dir: /go/src/test_server command: go run server.go container_name: test_server ports: - "8085:8085" links: - db tty: true 

每次我运行docker-compose up我收到此错误信息:

test_server | 控制器/ users.go:4:3:在以下任一项中都找不到软件包“_ / go / src / test_server / vendor / github.com / gin-gonic / gin”:test_server |
/usr/local/go/src/_/go/src/test_server/vendor/github.com/gin-gonic/gin(from $ GOROOT)test_server |
/go/src/_/go/src/test_server/vendor/github.com/gin-gonic/gin(from $ GOPATH)

这是指控制器包。 我使用github.com/kardianos/govendor来供应我的软件包。 你知道发生了什么事吗?

几个小时后,我终于可以解决它。 导致我使用了一个docker golang版本,它没有包含git。 我应该使用golang:1.8

我修改了我的Dockerfile,现在它就像一个魅力

 FROM golang:1.8 RUN go get github.com/gin-gonic/gin WORKDIR /go/src/app COPY . . RUN go install -v CMD ["app"] 

你需要告诉去哪里find包:

 api: ... environment: - GOPATH=/go/src/test_server 

或者有一个Dockerfile安装了正确的软件包(推荐)

我想这是因为你的更新代码正在运行去安装,而不是运行你的旧代码运行。

您需要将额外的golang软件包安装到您从应用程序调用的供应商目录中。