多阶段构建的目的是使最终的应用程序图像尽可能小,这就是我们在这里要做的。另外,我也会向你展示供应商和非供应商版本的构建。这取决于你的选择,但到目前为止,我从来不需要使用供应商版本,因为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.