当我运行 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/

10-16 23:55