登录
首页 >  Golang >  Go问答

构建过程中的多阶段失败,但正常构建成功

来源:stackoverflow

时间:2024-03-13 13:18:28 268浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《构建过程中的多阶段失败,但正常构建成功》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我有一个 dockerfile,它从最新的 golang docker 镜像(现在是 1.10.3)构建一个 golang 项目(监听 twitter 流并通过某些过滤器列出推文),如下所示:

from golang:1.10.3
copy . /destination/
workdir /destination/
run cgo_enabled=0 goos=linux go build -a -installsuffix cgo -o main .
cmd ["./main"]

当我运行 docker build 命令创建的映像时,它运行没有问题。问题是该图像的大小约为 900mb。

当我尝试使用多阶段构建来构建 docker 时,如下所示:

FROM golang:1.10.3-alpine3.7 as builder
...
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
FROM busybox
COPY --from=builder /go/src/github.com/mygithubname/ /
WORKDIR /path-to-the-main-file/
CMD ["./main"]

docker 镜像已成功构建并运行,但它只是在发布推文时不显示推文,而且也没有显示任何错误,这是最令人困惑的部分。即使当我 ssh 进入正在运行的容器并 ping google 时,它​​也会显示应有的一切。

任何人都可以提示我如何调试此问题,或者从正在运行的 docker 映像中获取更多日志?


解决方案


几件事

1) 容器退出了吗?如果你执行 docker ps 它似乎正在运行。

2)你检查docker log {container id}了吗

3) /go/src/github.com/mygithubname/ 是否实际反映了 docker 容器第一阶段构建的位置? 示例 docker 文件,其中副本反映构建环境的工作目录:

FROM golang AS build-env
ADD . /src/project
WORKDIR /src/project
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .

# final stage
FROM busybox
WORKDIR /app
COPY --from=build-env /src/project/ .
CMD ["./main"]

好了,本文到此结束,带大家了解了《构建过程中的多阶段失败,但正常构建成功》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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