docker-compose v3将文件夹名称添加到网络名称之前

时间:2017-03-03 04:13:54

标签: docker docker-compose docker-networking

当我运行docker-compose up -d时,docker始终使用包含docker-compose.yml文件的文件夹名称创建容器名称和网络名称。

我可以按如下方式指定容器名称:

nginx:
    container_name: nginx
    build:
        context: .
        dockerfile: .docker/docker-nginx.dockerfile

但是如何指定网络名称以使其不添加文件夹名称?

感谢。

2 个答案:

答案 0 :(得分:1)

你必须放置一个" .env"文件位于docker-compose项目目录的根目录中。

COMPOSE_PROJECT_NAME=MyFancyProject

有关详细信息,请参阅Docker文档:https://docs.docker.com/compose/reference/envvars/

如果您不使用docker-compose,则可以使用" -p"在docker run上设置此参数。

答案 1 :(得分:0)

Docker在当前文件夹名称前添加使用docker compose文件创建的所有组件名称。

例如:如果包含docker-compose.yml文件的当前文件夹名称为test,则所有卷,网络和容器名称都将附加test。为了解决该问题,人们早先提出了在docker-compose命令中使用 -p 标志的想法,但是该解决方案并不是最可行的解决方案,因为仅在-p属性之后需要一个项目名称。然后,将项目名称附加到使用docker compose文件创建的所有组件中。

上述问题的解决方案使用的是 name 属性,如下所示。

volumes: 
  data:
    driver: local
    name: mongodata

networks: 
  internal-network:
    driver: bridge
    name: frontend-network

此卷可以在服务部分中称为

services:
  mongo-database:
      volumes: 
        - data:/data/db
      networks: 
        - internal-network

上面的 name 属性将阻止docker-compose放置文件夹名称。

注意:对于容器名称,可以使用属性 container_name

services:
  mongo-database:
    container_name: mongo