运行多个实例时,Docker compose 不会将项目名称添加到容器名称前面

2024-03-28

我有一组运行时使用的 dockerdocker-compose up -d到目前为止还很基本

我想运行我的项目的多个实例,并且我已阅读此内容运行多个 docker compose https://stackoverflow.com/questions/43957259/run-multiple-docker-compose

现在跑步时docker-compose up -p PRNAME -dcompose 不会将项目名称添加到容器中,例如prname_container1我收到以下错误:

ERROR: for container1  Cannot create container for service service1: Conflict. The container name "/container1" is already in use by container "f7aeb2ef782556ae5b0". You have to remove (or rename) that container to be able to reuse that name.

我可能在这里遗漏了一些东西。

我的 docker-compose.yml 的一部分看起来像

services:
  service1:
    image: "${PROJECT_REPO}:image"
    container_name: "container1"
    ports:
      - 443:443
      - 8000:80
    networks:
      - db
      - proxy
      - oauth
    depends_on:
      - db

当你明确设置container_name:在你的docker-compose.yml文件,容器名称将为exactly您指定的内容; Docker Compose 不会为其添加每个目录的前缀。

通常这对您来说根本不重要,并且可以安全地删除container_name:。您仍然可以使用其他容器的服务名称来访问它们docker-compose.yml作为主机名,并且docker-composeCLI 为管理命令提供了包装器,例如docker-compose stop这将作用于正确的容器。

你也会遇到麻烦ports:这里还没有一个明确的解决方案。只有一个容器或进程可以绑定到主机上的特定端口。您可以省略第一个端口号ports:,Docker 会为你选择一个端口

ports:
  - '80'
  - '443'

但你需要手动查找对应主机端口号 https://docs.docker.com/compose/reference/port/

docker-compose port service1 80
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行多个实例时,Docker compose 不会将项目名称添加到容器名称前面 的相关文章

随机推荐