【发布时间】:2021-12-31 16:22:41
【问题描述】:
项目结构:
project_dir/
├── prj1/
│ ├── feature1/
│ ├─ |─ go.mod
│ ├─ |─ main.go
│ └─ |─ ...
│ └── ...
├── prj2/
│ ├── go.mod
│ ├── main.go
│ └── Dockerfile
│ └── ...
└── ...
prj2 中的代码通过go mod edit -replace 命令引用来自prj1/feature1 的函数。现在,这在本地运行良好,但我需要使用 Docker 进行部署,但我遇到了问题。
我的 docker 脚本如下所示:
FROM golang:1.17.5 as builder
WORKDIR /app
COPY go.* ./
ADD ./prj1 ./prj1
RUN go mod download
...
最初,我从 prj2 内部运行 docker build .,但 docker 文件中没有 ADD 命令,但 RUN go mod download 失败:
go mod 下载:github.com/name/project/prj1@v0.0.0-00010101000000-000000000000(替换为../prj1/feature1/):阅读/prj1/feature1/go.mod:打开/prj1/ feature1/go.mod: 没有这样的文件或目录
所以,我在 docker 文件中添加了ADD 命令来复制 prj1。接下来,我 cd 到 project_dir 并运行 docker build -f ./prj2/Dockerfile 但 RUN go mod download 现在失败了
go mod 下载:没有指定模块(参见“go help mod download”)
所以基本上,我的问题是,我如何告诉 go 命令 go.mod 在 prj2 中?
【问题讨论】:
标签: docker go go-modules