我想使用docker将我的C ++项目停靠。 互联网建议最好使用2个容器 - 开发和产品。但我不明白我需要如何创建一个开发容器来支持持续集成。
问题如下:
也许我根本没有正确的方向,例如,开发容器应该包含eclipse?关于CI怎么样呢?我找到的所有教程通常都是指PHP,没有编译阶段。
答案 0 :(得分:5)
您使用Docker和C ++有不同的模式。
使用准备好的Docker镜像编译项目
这包括使用所需编译器和第三方库(使用 docker build 创建)的docker镜像,并使用 docker run 命令编译项目。这通常是处理CI环境最常用的方式。
亲:
缺点:
在项目范围内构建Docker镜像
在这种情况下,您将所有需求和代码封装在docker镜像中,这意味着您必须在每次代码更改时重建它,删除以前运行的容器,在CI服务器中下载新映像等等。 / p>
优点:
缺点:
请记住,Docker有一定数量的最大允许图层(我猜它仍然是127),你拥有的图层越多,图像就越大。
<强>结论强>
我会明确地选择第一个解决方案,因为它为您提供了更大的灵活性,只要您使用Docker Volumes,就可以在不同环境中保持更改,特别是如果您使用某些包管理器(如conan或vcpkg)。
有关Docker / C ++图像的示例,请遵循解决方案#1,请参阅:one of my docker images
关于版本,您可以使用COPY或ADD在极其简单的Dockerfile中构建您的docker镜像,只需要项目所需的最小依赖项(最好通过静态编译代码来实现)