首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >main.go:不需要模块提供包

main.go:不需要模块提供包
EN

Stack Overflow用户
提问于 2021-08-08 13:01:14
回答 1查看 6.5K关注 0票数 5

存储在GitHub中的Go模块成功地在本地编译;但是,如果我试图通过docker (即使是在同一个文件夹中的本地)进行编译,就会收到一个错误,抱怨子文件夹中的每个本地导入都不存在本地包:

代码语言:javascript
运行
复制
=> ERROR [build 7/7] RUN go build -o myrepo-test .                                                                                                                                                                                                                          0.6s 
------
 > [build 7/7] RUN go build -o myrepo-test .:
#14 0.535 main.go:10:2: no required module provides package github.com/myuser/myrepo-test/common; to add it:
#14 0.535       go get github.com/myuser/myrepo-test/common
#14 0.535 main.go:13:2: no required module provides package github.com/myuser/myrepo-test/scraper/data/process; to add it:
#14 0.535       go get github.com/myuser/myrepo-test/scraper/data/process
(....)

这是我的go.mod

代码语言:javascript
运行
复制
module github.com/myuser/myrepo-test

go 1.16

以及码头文件:

代码语言:javascript
运行
复制
# use alpine due to its small footprint
FROM golang:1.16-buster AS build

WORKDIR /app

# download the required Go dependencies
COPY go.mod ./
COPY go.sum ./
RUN go mod download

COPY *.go ./

# FAIL
RUN go build -o myrepo-test .

##########
# Deploy #
##########

FROM gcr.io/distroless/base-debian10

WORKDIR /

COPY --from=build /myrepo-test /myrepo-test

USER nonroot:nonroot

ENTRYPOINT ["/myrepo-test"]

CMD ["/myrepo-test"]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-08 13:29:53

#14 0.535 main.go:10:2:不需要模块提供github.com/myuser/myrepo测试/通用包;添加它:

#14 0.535 get github.com/myuser/myrepo-test/common

上面的意思是您的源代码中有一个包common。但是COPY *.go ./不会将这些文件夹添加到停靠构建容器中,它只会将当前目录中的go files复制到停靠构建中。由于go build无法在容器中的源代码中找到包common,它将尝试从github下载它,因此构建失败。

然后,正确的解决方案如下:

文档:

代码语言:javascript
运行
复制
FROM golang:1.16-buster AS build

WORKDIR /app

# download the required Go dependencies
COPY go.mod ./
COPY go.sum ./
RUN go mod download
#COPY *.go ./
COPY . ./

RUN ls

RUN go build -o myrepo-test .

以上将添加您的所有资源到容器中,包括包common等,然后构建就可以了。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68701039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档