gpt4 book ai didi

docker - Go 1.11 在 Docker 构建中自己的包的未知导入路径

转载 作者:IT王子 更新时间:2023-10-29 01:27:59 26 4
gpt4 key购买 nike

我正在迁移一些代码以使用 Go 1.11 模块,我可以从 shell 构建它,但不能在 Docker 中构建。

相关 Dockerfile 部分:

WORKDIR /goscout
COPY ["go.mod", "go.sum", "./"]
RUN GO111MODULE=on go get -u=patch
COPY *.go ./
RUN GO111MODULE=on go build -v -ldflags "-linkmode external -extldflags -static" -o GoScout -a .

当 Docker 运行上述摘录中的最后一个命令时,出现此错误:

can't load package: package github.com/triplestrange/StrangeScout/goscout: unknown import path "github.com/triplestrange/StrangeScout/goscout": ambiguous import: found github.com/triplestrange/StrangeScout/goscout in multiple modules:
github.com/triplestrange/StrangeScout/goscout (/goscout)
github.com/triplestrange/StrangeScout v0.3.0 (/go/pkg/mod/github.com/triplestrange/!strange!scout@v0.3.0/goscout)

我没有在 shell 中得到这个,所以我猜我没有正确复制一些文件。但是在这个命令运行之前,我已经复制了go.modgo.sum*.go,所以我不知道什么可以失踪。

最佳答案

确保为项目正确初始化模块

go mod init github.com/triplestrange/StrangeScout/goscout

这样你的go.mod的内容就是

module github.com/triplestrange/StrangeScout/goscout

然后您可以使用当前的 Dockerfile 无需任何更改

无需设置 GO111MODULE=on,因为您正在 $GOPATH 之外运行 go 命令

➜ docker build -t goscout .Sending build context to Docker daemon   47.1kBStep 1/11 : FROM golang:latest AS builder ---> fb7a47d8605bStep 2/11 : WORKDIR /goscout ---> Running in e9786fe5ab53Removing intermediate container e9786fe5ab53 ---> 6d101e346175Step 3/11 : COPY ./ ./ ---> 7081c0b47dc9Step 4/11 : RUN go get -d -v ./... ---> Running in 3ce69359ae88go: finding github.com/go-sql-driver/mysql v1.4.0go: finding github.com/gorilla/mux v1.6.2go: downloading github.com/gorilla/mux v1.6.2go: downloading github.com/go-sql-driver/mysql v1.4.0Removing intermediate container 3ce69359ae88... ---> 3df0dbca80e5Successfully built 3df0dbca80e5Successfully tagged goscout:latest

关于docker - Go 1.11 在 Docker 构建中自己的包的未知导入路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52597880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com