在有和没有供应商目录的情况下,对Golang应用程序进行多阶段docker构建

99 阅读1分钟

多阶段构建的目的是使最终的应用程序图像尽可能小,这就是我们在这里要做的。另外,我也会向你展示供应商和非供应商版本的构建。这取决于你的选择,但到目前为止,我从来不需要使用供应商版本,因为Go在依赖性管理方面一直很好。

结构

.

docker-compose.yaml

version: "3.4"

非供应商版本

Docker文件

#
较短的版本
#

构建和运行

假设这些命令是你的Makefile 文件的一部分。

// Prune unused packages and dependencies from go.mod file.

供应商版本

Dockerfile

在这种情况下,应用程序根目录下必须有vendor 文件夹。为此,你应该运行底部提到的两个额外的命令,以便准确的依赖关系可以被复制过来。

#

构建和运行

假设这些命令是你的Makefile 文件的一部分。

// Prune unused packages and dependencies from go.mod file.