Docker compose删除另一个容器

Docker compose删除另一个容器,docker,docker-compose,Docker,Docker Compose,我有一个项目,有一个基本的docker-compose.yml文件,然后是另外两个文件——每个文件对应一个环境docker-compose.dev.yml和docker-compose.prod.yml docker-compose.yml docker-compose.dev.yml docker-compose.prod.yml 我运行我的dev/prod环境,比如docker compose-f docker-compose.yml-f docker compose.dev | prod.

我有一个项目,有一个基本的docker-compose.yml文件,然后是另外两个文件——每个文件对应一个环境docker-compose.dev.yml和docker-compose.prod.yml

docker-compose.yml

docker-compose.dev.yml

docker-compose.prod.yml

我运行我的dev/prod环境,比如docker compose-f docker-compose.yml-f docker compose.dev | prod.yml up

问题是,我不能在那里同时运行两个容器,尽管我能像一个月前那样运行,并且在几次更改之前运行。例如,每次我运行dev-environment并生成docker compose for prod-environment docker时,docker都会这样说:

redis is up-to-date
selenium is up-to-date
Recreating richy-dev
这很奇怪,因为当我启动richy-prod时,它为什么要重新创建richy-dev容器

我的配置文件中可能有冲突。你们能帮帮我吗


谢谢。

基本上要区分两个环境的容器名称,需要明确定义项目名称。否则,它将根据文件夹名称获取名称

您可以使用-p或COMPOSE_PROJECT_NAME环境变量来实现此目的


摘自:

看起来可能是因为这两项服务都名为appThank you。我将尝试一下并报告结果。谢谢。我写了一篇有完整解决方案的文章
version: "2"

services:
    app:
        build: 
            args:
                env: dev
        image: richy_image:dev-latest
        container_name: richy-dev
        volumes:
            - .:/var/www/richy
        ports:
            - 9000:80
        environment: 
            - ENV=dev
version: "2"

services:
    app:
        build: 
            args:
                env: prod
        image: richy_image:prod-latest
        container_name: richy-prod
        volumes:
            - /home/grafa/workspace/prichy/richy/db.sqlite3:/var/www/richy/richy/db.sqlite3
        ports:
            - 9001:80
        environment: 
            - ENV=prod
redis is up-to-date
selenium is up-to-date
Recreating richy-dev