docker-compose не может найти пакет

Я пишу простое приложение в 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, я получаю следующее сообщение об ошибке:

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/ джин-гоник / джин (от $ GOPATH)

Это относится к пакету контроллеров. Я использую github.com/kardianos/govendor для продажи своих пакетов. Вы знаете, что происходит?


person utiq    schedule 26.05.2017    source источник


Ответы (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"]
person utiq    schedule 27.05.2017
comment
Выдает ошибку: go: отсутствует команда Git. См. golang.org/s/gogetcmd, вы тоже знаете, как решить эту проблему? - person Nirmal Vatsyayan; 04.08.2018

Вам нужно указать, где найти пакеты:

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

Или установите Dockerfile с установленными надлежащими пакетами (рекомендуется)

person Robert    schedule 26.05.2017
comment
Я сделал это, но это не работает, теперь сообщение об ошибке следующее: test_server | ers / users.go: 4: 3: не удается найти пакет github.com/gin-gonic/gin ни на одном из: test_server | /usr/local/go/src/github.com/gin-gonic/gin (от $ GOROOT) test_server | /go/src/test_server/src/github.com/gin-gonic/gin (из $ GOPATH) Я также пробовал использовать Dockerfile, потому что мне это более элегантное решение, но каждый раз, когда я его создаю, я получаю сообщение об ошибке: Это это содержимое Dockerfile: FROM golang: 1.8-alpine RUN иди получить github.com/gin-gonic/gin EXPOSE 8085 - person utiq; 27.05.2017

Я думаю, это потому, что ваш обновленный код запускается, иди, устанавливай, а не запускай, как работал твой старый код.

Вам нужно было установить дополнительные пакеты golang в каталог поставщика, который вы вызываете из своего приложения.

person vandekerkoff    schedule 27.05.2017