【发布时间】:2021-01-21 23:39:03
【问题描述】:
我正在寻找使用 docker 来模拟我们当前云环境的最低限度。我们有大约 10 个服务(每个都有你自己的 MySQL8 数据库、redis、php-fpm 和 nginx)。目前他们每个存储库都有一个docker-compose.yml,但是如果我想测试一个服务需要与另一个服务通信的功能,我不走运。
我的第一种方法是为每个服务创建一个Dockerfile(并使用新的docker-compose.yml一起运行),使用Debian,但我没有走得太远,能够安装nginx,(@ 987654328@ 和依赖项),但是当我进入数据库时,它变得很奇怪,我觉得这不是正确的做法。
有没有办法从服务中“包含”每个docker-compose.yml docker-compose.yml?
有更好的方法吗?还是我应该继续使用Dockerfile 并使用docker-compose 在同一个网络上运行它们?
【问题讨论】:
-
您可以使用
externalnetworks配置docker-compose,即用网络A创建项目A然后创建项目B并使用它自己的网络+项目A创建的外部网络。来自项目B的服务配置了外网的可以和项目A中运行的服务进行通信。 -
如果您确实想在同一个网络中启动所有服务(假设它们都使用默认网络进行配置),那么您可以使用
-fcommand-line option 或COMPOSE_FILE环境变量来包含来自所有docker-compose.yml文件的服务,即:COMPOSE_FILE=docker-compose.a.yml:docker-compose.b.yml docker-compose up -d但是注意如果多个项目指定相同的服务,这将作为覆盖。
标签: docker docker-compose dockerfile microservices