gpt4 book ai didi

docker - 尽管docker-compose.yml中的container_name不同,但docker-compose仍会重新创建运行中的容器

转载 作者:行者123 更新时间:2023-12-02 19:02:59 25 4
gpt4 key购买 nike

我有一个简单的docker-compose.yml文件:

services:
app:
build: .
image: team/repo:$VERSION
ports:
- "$PORT:3000"
container_name: myname-$VERSION
volumes:
- $DB_PATH:/db
- ./tmp:/tmp
environment:
DB_PATH: /db
volumes:
db:
tmp:

在我定义之后 VERSION=1.0.0PORT=80,我使用以下命令启动容器:
docker-compose up -d

并创建一个容器“myname-1.0.0”。之后,如果我重新导出 env. var。例如 VERSION=1.0.1PORT=8080并重新运行该命令,它将停止正在运行的容器并启动新的“byname-1.0.1”。但消息是:

Recreating myname-1.0.0 ... done



“docker ps”仅显示新的容器“myname-1.0.1”,但是我希望看到这两个容器分别在端口 808080上运行;并分别来自2个不同的图像“team / repo:1.0.0”和“team / repo:1.0.1”。

使2个容器并排运行的正确步骤是什么?我将不胜感激任何指示,谢谢!

最佳答案

Docker Compose在容器上使用标签来记住哪个容器与哪个撰写文件一起使用。这样的容器名称不用于此目的。 (在fig的早期版本中,这不是事实,但since 2015确实如此。)

Compose具有project name的概念。这有几个影响。一种是将项目名称放入容器标签中,因此在不同项目名称下部署的相同docker-compose.yml的版本被视为不同项目。另一个是基于项目和服务名称的container_name:的默认值。

因此,如果您:

  • 删除container_name:并让Docker Compose为您构造一个无冲突的默认值;和
  • 使用 docker-compose -p option $COMPOSE_PROJECT_NAME environment variable显式指定项目名称。
    VERSION=1.0.0 PORT=80 COMPOSE_PROJECT_NAME=project-100 \
    docker-compose up
    VERSION=1.0.1 PORT=8080 COMPOSE_PROJECT_NAME=project-101 \
    docker-compose up
  • 关于docker - 尽管docker-compose.yml中的container_name不同,但docker-compose仍会重新创建运行中的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57250196/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com