登录
首页 >  Golang >  Go问答

使用 golang docker 镜像在子文件夹中构建 go.mod 文件

来源:stackoverflow

时间:2024-03-11 17:30:28 301浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《使用 golang docker 镜像在子文件夹中构建 go.mod 文件》,聊聊,我们一起来看看吧!

问题内容

我有一个 go 项目文件夹

my_project
|- common
    |- library
        |- golang
|- my_app
    |- dockerfile
    |- go.mod
    |- go.sum
    |- main.go

dockerfile来自google cloud官方示例:

from golang:1.15-buster as builder

workdir /app

copy go.* ./
run go mod download

copy . ./

run go build -mod=readonly -v -o server

from debian:buster-slim
run set -x && apt-get update && debian_frontend=noninteractive apt-get install -y \
    ca-certificates && \
    rm -rf /var/lib/apt/lists/*

copy --from=builder /app/server /server

cmd ["/server"]

go.mod 在同一项目中使用公共库,但属于私有存储库:

module run

go 1.15

require (
    github.com/my/private/my_project/common/library/golang v0.0.0-00010101000000-000000000000
)

replace (
    github.com/my/private/my_project/common/library/golang => ../common/library/golang
)

当我在 my_app 路径下运行 docker build 来构建映像时,出现此错误:

...
 => ERROR [builder 4/6] RUN go mod download                                                                                                                                                                  1.0s
------
 > [builder 4/6] RUN go mod download:
#13 0.934 go: github.com/my/private/my_project/[email protected]: parsing /common/library/golang/go.mod: open /common/library/golang/go.mod: no such file or directory
------
executor failed running [/bin/sh -c go mod download]: exit code: 1

为什么在当前路径下找不到go.mod文件,而是使用/common/library/golang/go.mod


解决方案


您的 docker 上下文(docker build .)只能看到 . 目录中的文件 - 而不是父目录,因此看不到 ../common/

要解决此问题,请将 Dockerfile 移动到更高的目录并更新对各个子目录的所有构建引用,以便可以从这个更全面的 docker 上下文中访问它们。

您可以为两个项目/服务创建一个单独的 Dockerfile,并将它们拼接到 docker-compose.yml 文件中,并使用 dependent_on 和相同的网络

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>