使用Docker的自包含微服务

我正在尝试设置一个由多个与Docker协作的微服务构build的项目。 这是我的项目的简化模式:

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

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

但是,我自己在运行单个组件时遇到问题。 问题是Microservice1依赖于rabbitMQ,但是它没有一个组合文件来pipe理这个依赖关系,其他所有组件也是如此。 所以当我尝试自己运行任何单个组件(对于unit testing,例如)我有一个缺less依赖关系的问题。

我是否也应该在每个组件的Dockerfile上添加所有依赖关系? 我应该为每个组件有一个docker-compose文件吗? build立这样一个系统的最佳实践是什么?

非常感谢!

更新:

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

确实,微服务必须是自包含的,这意味着它可以在没有其他微服务的情况下进行部署和扩展。 但通常需要dbms或消息代理或caching系统才能开始运行。 这就是为什么大多数CI系统,如Gitlab CI , Drone或Jenkins在执行unit testing之前都具有启动其他服务的function。 如果你没有使用任何CI,那么每个组件都有合成文件是明智的。