docker-compose找不到包

时间:2017-05-26 21:43:07

标签: docker go docker-compose govendor

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

enter image description here

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时,都会收到以下错误消息:

  

test_server | controllers / 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   (来自$ GOROOT)test_server |
  /go/src/_/go/src/test_server/vendor/github.com/gin-gonic/gin(from   $ GOPATH)

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

3 个答案:

答案 0 :(得分:3)

经过几个小时,我终于可以解决它了。 导致我使用的是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"]

答案 1 :(得分:0)

你需要告诉go找到包裹的地方:

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

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

答案 2 :(得分:0)

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

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