Docker的独立微服务

时间:2017-09-01 09:14:22

标签: docker docker-compose microservices

我正在尝试设置一个由Docker编排的几个微服务构建的项目。这是我项目的简化模式:

- Main-project
  - Dockerfile
  - docker-compose.yml (bundles Microservice1 and Microservice2)

- Microservice1
  - Dockerfile

- Microservice2
  - Dockerfile

现在,每个组件都有许多依赖项,例如由docker-compose.yml文件管理的RabbitMQ。我设法通过使用compose文件使整个项目在Docker上运行。

但是,我自己运行各个组件时遇到了问题。问题是Microservice1依赖于rabbitMQ,但它没有一个compose文件来管理这种依赖关系,所有其他组件也是如此。因此,当我尝试单独运行任何单个组件时(对于单元测试,对于实例),我遇到了缺少依赖项的问题。

我是否应该在每个组件的Dockerfile上添加所有依赖项? 我应该为每个组件安装一个docker-compose文件吗? 设置这样的系统的最佳做法是什么?

非常感谢!

更新

作为一个重要的说明,我忘了提到每个微服务都有自己的回购。

1 个答案:

答案 0 :(得分:3)

微服务必须是自包含的,这意味着它可以在没有其他微服务的情况下进行部署和扩展。但通常需要dbms或消息代理或缓存系统才能开始运行服务。这就是为什么大多数CI系统(例如Gitlab CIDrone或Jenkins都具有在执行单元测试之前启动其他服务的功能的原因。如果您没有使用任何CI,那么为每个组件撰写文件是明智的。