gpt4 book ai didi

docker - 在不调用 go build 的情况下为 golang 应用程序构建 docker 容器

转载 作者:IT王子 更新时间:2023-10-29 02:07:00 24 4
gpt4 key购买 nike

我正在为 go 应用程序构建我的第一个 Dockerfile,我不明白 go buildgo install 被认为是 docker 容器的必要部分。

我知道使用 muilt-stage 可以避免这种情况,但我不知道为什么它一开始就放在容器镜像中。

我所期望的:

  • 我有一个 go 应用程序“go-awesome”

  • 我可以通过 cmd/go-awesome 在本地构建它

我的 Dockerfile 包含的内容不多于

COPY go-awesome .

CMD ["go-awesome"]

这种配置的缺点是什么?我通过代替做得到了什么

COPY . .

RUN go get ./...

RUN go install ./..

显示构建 Go 应用程序作为 Dockerfile 一部分的帖子的链接

https://www.callicoder.com/docker-golang-image-container-example/

https://blog.codeship.com/building-minimal-docker-containers-for-go-applications/

https://www.cloudreach.com/blog/containerize-this-golang-dockerfiles/

https://medium.com/travis-on-docker/how-to-dockerize-your-go-golang-app-542af15c27a2

最佳答案

您说得对,您可以在本地编译您的应用程序并简单地将可执行文件复制到合适的 docker 镜像中。

但是,在 docker build 中编译应用程序有很多好处,特别是对于具有多个协作者的大型项目。具体想到以下原因:

  • 构建应用程序源不需要本地依赖项(docker 除外)。有人甚至不需要去安装。这对于使用多种语言的项目特别有值(value)。假设有人可能想要在 go 项目中编辑 HTML 模板,并查看它在容器运行时中的样子。
  • 构建环境(go 版本、依赖管理、文件路径...)是不变的。可以通过 Dockerfile 安全地管理和维护任何外部依赖项。

关于docker - 在不调用 go build 的情况下为 golang 应用程序构建 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55872209/

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