在我的CI管道中使用docker-compose和codeship-services

时间:2017-09-20 23:11:02

标签: docker docker-compose microservices codeship

我正在构建一个包含microservicesCI/CD的应用,并试图使用CodeshipDockercodeship-services.yml管道进行原型设计。

我对使用docker-compose.ymldocker-compose之间的区别感到困惑。 Codeship文档说 -

  

默认情况下,我们查找文件名codeship-services.yml。在其中   缺席时,Codeship将自动搜索docker-compose.yml   要在其位置使用的文件。

根据我的理解,microservices在我的情况下可能更合适,因为我想同时为所有codeship-services.yml启动容器以进行集成测试。如果我想以串行方式而不是并行方式构建我的服务,Point会有所帮助。

我的理解是否正确?

2 个答案:

答案 0 :(得分:5)

您可以使用与codeship-services.yml相同的方式使用docker-compose.yml。因此,您可以通过link键定义服务并启动多个容器。

我在codeship-services.yml中完全一样。我在我的前端服务上做了一些测试,当我通过codeship-steps.yml运行时,该服务会转移所有依赖的服务(后端,数据库等),就像在docker-compose.yml中一样。

一开始,有两个文件几乎相同,让我有点困惑。我实际上通过该问题联系了Codeship支持,答案是它可能是同一个文件(因为compose文件中的所有不可用功能都被忽略了,请参阅here)但几乎在所有情况下他们都看到它是更容易在最后有两个单独的文件,一个用于CI / CD,另一个用于运行docker-compose。

同样对我来说也是如此,因为我需要很多服务,这些服务仅用于CI / CD,例如部署或特殊测试容器,只是在进行cURL测试,例如..

我希望这有助于并且不会让您更加困惑;)

答案 1 :(得分:2)

codeship-services.yml视为docker-compose.yml的超集,因为codeship-services.yml具有Docker Compose未提供的其他选项。除此之外,它们完全相同。两者都以相同的方式构建图像,并且两者都可以立即启动所有容器。

话虽如此,我同意Moema的回答,在项目中同时拥有这两个文件并针对其环境优化每个文件通常会更好。例如,缓存只能在codeship-services.yml中配置。对于我们的图像,缓存对构建时间产生巨大影响,因此我们肯定想要使用它。就像Moema一样,我们在CI上需要很多辅助工具,我们不需要本地(AWS CLI,curl,测试框架......)。另一方面,我们经常在本地运行多个服务实例,这在Codeship上是不必要的。

在我们的项目中包含这两个文件使我们更容易满足CI和本地开发的不同要求。