我是 Docker 的新手并开始构建容器。我遇到了用于在容器内构建多个容器的 Docker-compose。
现在,我在使用 docker-compose 容器时遇到了问题。
我创建了两个 yaml 文件,分别是 producer.yaml
和 consumer.yaml
。
#producer.yaml
version: "3"
services:
mymongo:
image:// imageurl
port: 6666:6666
mynodeapp:
build:
context: //Dockerfile path
port:
- 2222:2222
#end producer.yaml
#consumer.yaml
version: "3"
services:
mymongo:
image:// sameImageUrl
port: 7777:6666
mynodeapp:
build:
context: //Dockerfile path
port:
- 3333:3333
#end consumer.yaml
现在,当我运行 docker-compose producer.yaml up
时。生产者容器已启动并正在运行。但同时,如果我运行 docker-compose consumer.yaml up
。此命令使生产者容器终止,然后消费者容器将运行。我如何确保两个容器使用的 imageURL 是分开的。
答案 0 :(得分:0)
要运行多个文件,您应该同时运行所有文件
docker-compose up -f producer.yaml -f consumer.yaml up
当您运行单个文件时,compose 将尝试启动所有服务,如果没有服务名称冲突,它不会终止任何现有服务。
在您的情况下,您的消费者和生产者的服务名称相同,这是错误的。因为当您合并这两个文件时,compose 将仅使用其中一个定义。因此,您在 yaml 中的服务名称应为 mynodeapp-producer
和 mynodeapp-consumer
,以防您希望它们并行运行。
如果您希望两者的 mongodb
不同,那么您也应该将这些名称配置为不同的