为golang应用程序构建docker容器而无需调用go build

时间:2019-04-26 17:11:42

标签: docker go dockerfile

我正在为go应用程序构建我的第一个Dockerfile,但我不理解go buildgo install被认为是Docker容器的必要组成部分。

我知道可以使用muilt-stage来避免这种情况,但我不知道为什么首先将它放在容器映像中。

我期望的是

  • 我有一个go应​​用程序'go-awesome'

  • 我可以通过cmd / go-awesome

  • 在本地构建它

我的Dockerfile包含的内容不多于

  

复制真棒。

     

CMD [“棒极了”]

此配置的缺点是什么?我反而会得到什么

  

复制。 。

     

RUN go get。/ ...

     

运行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

1 个答案:

答案 0 :(得分:1)

您可以在本地编译应用程序,只需将可执行文件复制到合适的docker映像中,这是正确的。

但是,在docker内部构建编译应用程序有很多好处,特别是对于具有多个协作者的大型项目。具体来说,有以下原因:

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