虽然大多数时候我正在开发Java应用程序并且只使用Maven,所以我的构建应该是可重现的(至少Maven说的是这样).
但是,假设您正在编译C++程序或更多涉及的东西,您是否应该在docker内构建?
或者理想地使用vagrant或其他技术来生成可重现的构建.
如何使用docker管理可重现的构建?
您可以,但不能在最终图像中,因为这意味着图像比必要的图像大得多:它将包括所有编译工具,而不是仅限制执行生成的二进制文件所需的内容.
您可以在" 如何在没有构建工具的情况下为Ruby项目构建Docker镜像? "中找到替代方案.
我使用图像来构建,
我将生成的已停止的容器提交为新图像(包含生成的二进制文件的卷)
我使用一个执行图像(一个只包含你需要运行的图像),并从另一个图像复制二进制文件.我再次提交生成的容器.
最终图像包括已编译的二进制文件和执行环境.