Я очень новичок в использовании модулей, и я пытаюсь взять проект и обновить его, чтобы использовать их, поскольку они кажутся действительно отличным способом наконец-то справиться с моими зависимостями. Однако у меня возникла проблема с сборкой в Docker.
У меня есть проект с файлом main.go
и go.mod
(который ссылается как на частные / локальные репозитории, так и на общедоступные, такие как go.uber.org/zap
). Я назвал свой модуль github.internal.com/team_name/project_name
Я продал свои зависимости. Итак, моя структура проекта выглядит так:
project
- main.go
- internal
- utils.go
- go.mod (github.internal.com/team_name/project_name)
- vendor
- go.uber.org
- private.repo.com
Dockerfile
Затем в main.go
я импортирую
import (
"github.internal.com/team_name/project_name/internal"
"go.uber.org/zap"
)
Все это прекрасно работает, и я могу запустить go build
без проблем.
Проблема возникает, когда я пытаюсь построить с помощью Docker. В моем Dockerfile я запускаю
ENV GOPATH /go
COPY . /go/src/github.internal.com/team_name/project_name
WORKDIR /go/src/github.internal.com/team_name/project_name
RUN CGO_ENABLED=0 GOOS=linux go build -a -o slaxtract main.go
Когда я запускаю docker build
, он возвращает:
main.go:7:2: cannot find package "github.internal.com/team_name/project_name/internal" in any of:
/go/src/github.internal.com/project_name/team_name/vendor/github.internal.com/project_name/team_name/internal (vendor tree)
/usr/local/go/src/github.internal.com/team_name/project_name/internal (from $GOROOT)
/go/src/github.internal.com/team_name/project_name/internal (from $GOPATH)
Как мне попасть в нужный каталог, чтобы распознать все мои файлы в моем модуле?
Заранее спасибо!
go mod vendor
), вам нужно добавить флаг-mod=vendor
вgo build
, чтобы он их использовал. - person Mark A   schedule 19.07.2019