我正在尝试为围绕 GCP 的项目构建 DockerFile。我正在使用 go 版本 1.17,它在 get 命令中失败,说 go.mod 未找到,但它与 Dockerfile 存在于同一目录中。我已经尝试过了go mod init,go mod tidy但我仍然遇到同样的错误。这是我的环境变量和文件:GO111MODULE="auto"GOARCH="amd64"GOBIN=""GOCACHE="/home/name/.cache/go-build"GOENV="/home/name/.config/go/env"GOEXE=""GOEXPERIMENT=""GOFLAGS=""GOHOSTARCH="amd64"GOHOSTOS="linux"GOINSECURE=""GOMODCACHE="/home/name/work/pkg/mod"GONOPROXY=""GONOSUMDB=""GOOS="linux"GOPATH="/home/name/work"GOPRIVATE=""GOPROXY="https://proxy.golang.org,direct"GOROOT="/usr/local/go"GOSUMDB="sum.golang.org"GOTMPDIR=""GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"GOVCS=""GOVERSION="go1.17.1"GCCGO="gccgo"AR="ar"CC="gcc"CXX="g++"CGO_ENABLED="1"GOMOD="/home/name/workspace/professional-services/tools/gcs2bq/go.mod"CGO_CFLAGS="-g -O2"CGO_CPPFLAGS=""CGO_CXXFLAGS="-g -O2"CGO_FFLAGS="-g -O2"CGO_LDFLAGS="-g -O2"PKG_CONFIG="pkg-config"GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build3855548593=/tmp/go-build -gno-record-gcc-switches"我的工作目录中的文件列表:name@vm-gcs2bq:~/workspace/professional-services/tools/gcs2bq$ lsDockerfile bigquery.schema datastudio.png gcs2bq.avsc go.mod main.goREADME.md credentials.json gcs2bq-custom-role.yaml gcs2bq.yaml go.sum run.sh我在 Dockerfile 中的工作目录设置正确(gcs2bq 之一),当我尝试构建它时,我得到了:Step 6/16 : RUN go get -v ./... ---> Running in ebaa284887cfgo: go.mod file not found in current directory or any parent directory; see 'go help modules'我还是个新手,主要是 c 和 python,我读到包在这种语言中以不同的方式管理,但我认为我也正确设置了路径。如我错了请纠正我。任何帮助表示赞赏,如果需要,请询问更多详细信息。提前致谢 !
1 回答
偶然的你
TA贡献1841条经验 获得超3个赞
好的,我解决了我的问题。
首先,我的 WORKDIR 没有指向正确的目录:WORKDIR /go/src/github.com/rosmo/gcs2bq
而不是,WORKDIR /work/src/github.com/rosmo/gcs2bq
但这只是因为我使用 /work 而不是 /go 来安装已安装的包。
然后我在COPY main.go .
命令之后添加了以下内容:
RUN go mod init v1 RUN go mod tidy
它创建了“丢失的” go.mod 文件并正确安装了所需的依赖项/包。
构建的其余部分完全正常。
谢谢你的帮助。
- 1 回答
- 0 关注
- 409 浏览
添加回答
举报
0/150
提交
取消