我是一个非常新的模块,我正在尝试一个项目并更新它以使用它们,因为它们似乎是最终处理我的依赖项的好方法。但是,我在 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)
如何进入正确的目录以识别模块中的所有文件?
提前致谢!