我希望使用docker来模拟我们当前的云环境。 我们有大约10个服务(每个服务都有自己的MySQL8数据库,redis,php-fpm和nginx)。目前,每个服务都有一个docker-compose.yml文件,但它们无法相互通信,如果我想测试一个服务需要与另一个服务进行通信的功能,则会出现问题。
我的第一种方法是为每个服务创建一个Dockerfile(并使用新的docker-compose.yml一起运行),使用Debian,但我没有得到很好的结果。 我能够安装nginx(php-fpm和依赖项),但当我到达数据库时,情况变得奇怪了,我感觉这不是正确的做法。
是否可以让一个docker-compose.yml文件“包含”来自各个服务的docker-compose.yml文件?是否有更好的方法?或者我应该坚持使用Dockerfile并在同一个网络上使用docker-compose运行它们呢?
我的第一种方法是为每个服务创建一个Dockerfile(并使用新的docker-compose.yml一起运行),使用Debian,但我没有得到很好的结果。 我能够安装nginx(php-fpm和依赖项),但当我到达数据库时,情况变得奇怪了,我感觉这不是正确的做法。
是否可以让一个docker-compose.yml文件“包含”来自各个服务的docker-compose.yml文件?是否有更好的方法?或者我应该坚持使用Dockerfile并在同一个网络上使用docker-compose运行它们呢?
external
网络来配置docker-compose
,即创建项目 A 时使用网络 A,然后创建项目 B 并使用自己的网络和由项目 A 创建的外部网络。在使用外部网络进行配置的项目 B 的服务可以与运行在项目 A 中的服务进行通信。 - masseyb-f
命令行选项 或COMPOSE_FILE
环境变量来包括所有docker-compose.yml
文件中的服务,例如:COMPOSE_FILE=docker-compose.a.yml:docker-compose.b.yml docker-compose up -d
但是请注意,如果多个项目指定相同的服务,则此操作将起到覆盖作用。 - masseyb