3

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

在此处输入图像描述

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

测试服务器 | 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(来自 $GOPATH)

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

4

3 回答 3

4

几个小时后,我终于可以修复它了。结果我使用了一个不包含 git 的 docker golang 版本。我应该使用 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"]
于 2017-05-27T18:30:48.950 回答
0

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

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

于 2017-05-27T19:59:16.903 回答
0

你需要告诉去哪里可以找到包:

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

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

于 2017-05-26T21:55:46.777 回答