对我来说,用例是作为完整docker服务设置的一部分,我需要使用Mongodb和InfluxDb等第三方服务的容器。这些第3方服务提供的容器可能存在于我的机器中,也可能不存在。我想使用相同的容器,并防止docker compose如果它们已经存在则重新创建它们,如果它们不存在则重新创建它们。
我创建了一个docker compose文件,如下所示:
version: "3.7"
services:
mongo-database:
container_name: mongo
image: mongo:${Mongo_Service_Version}
restart: always
ports:
- "30041:27017"
networks:
- internal-network
volumes:
- data:/data/db
service-test:
container_name: service-test
image:service1:v1
restart: always
ports:
- "30091:80"
networks:
- internal-network
depends_on:
- mongo-database
我创建了mongo服务,然后创建了依赖mongo服务的应用程序服务测试。 (注意:服务测试仅用于演示目的)
我面临的问题是,当我运行docker-compose命令以启动该服务时,我能够成功地做到这一点。 docker compose首先创建一个mongo容器,然后创建一个service容器,但是问题是,如果已经存在具有相同名称和相同配置的mongo容器,则docker compose会给出一个错误,即具有相同名称的容器已经存在。 我的用例是我不想手动删除旧容器并使用docker-compose重新创建它。我的期望是docker compose足够聪明,可以处理这种情况。 Docker compose不应尝试重新创建已存在的容器。
如果仅提供服务版本升级,并且我们运行docker compose命令,则docker compose表现得很聪明,并且不会重新创建mongo容器,但是当mongo容器分别/手动创建时,为什么它不会表现出智能功能。 >