到目前为止,我有一组使用docker-compose up -d
进行基本操作的docker
我想运行我的项目的多个实例,并且已经阅读了Run multiple docker compose
现在,在运行docker-compose up -p PRNAME -d
时,compose不会在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
答案 0 :(得分:1)
在container_name:
文件中显式设置docker-compose.yml
时,容器名称将精确地等于您指定的名称。 Docker Compose不会向其添加每个目录的前缀。
通常,这对您完全没有关系,可以安全地删除container_name:
。您仍然可以使用docker-compose.yml
中的服务名称作为主机名来访问其他容器,并且docker-compose
CLI为诸如docker-compose stop
之类的管理命令提供了包装,这些命令将在正确的容器上起作用。 / p>
您还将遇到ports:
的麻烦,这里没有一个明确的解决方案。只有一个容器或进程可以绑定到主机上的特定端口。您可以省略ports:
中的第一个端口号,然后Docker会为您选择一个端口
ports:
- '80'
- '443'
但是您需要manually look up the corresponding host port number
docker-compose port service1 80