当我运行 docker-compose up -d
时,docker 总是创建容器名称和网络名称,并以包含 docker-compose.yml
文件的文件夹名称为前缀。
我可以指定容器名称如下:
nginx:
container_name: nginx
build:
context: .
dockerfile: .docker/docker-nginx.dockerfile
但是如何指定网络名称,以便它不会在其前面添加文件夹名称?
谢谢。
最佳答案
Docker 在当前文件夹名称前面加上使用 docker compose 文件创建的所有组件名称。
例如:如果包含 docker-compose.yml 文件的当前文件夹名称是 test,则所有卷、网络和容器名称都将附加到它上面。为了解决这个问题,人们早先提出了在 docker-compose 命令中使用 -p 标志的想法,但该解决方案并不是最可行的解决方案,因为在 -p 属性之后需要一个项目名称。然后将项目名称附加到使用 docker compose 文件创建的所有组件。
解决上述问题的 是使用 名称 属性,如下所示。
volumes:
data:
driver: local
name: mongodata
networks:
internal-network:
driver: bridge
name: frontend-network
该卷可以在服务部分称为
services:
mongo-database:
volumes:
- data:/data/db
networks:
- internal-network
上面的 名称 属性将阻止 docker-compose 预先添加文件夹名称。
注意:对于容器名称,可以使用属性 container_name
services:
mongo-database:
container_name: mongo
关于docker-compose v3 将文件夹名称添加到网络名称之前,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42570539/