【问题标题】:docker-compose v3 prepend folder name to network namedocker-compose v3 将文件夹名称添加到网络名称
【发布时间】:2019-11-27 16:59:32
【问题描述】:

当我运行 docker-compose up -d 时,docker 总是创建容器名称和网络名称,并在文件夹名称前加上包含 docker-compose.ymlfile 的文件夹名称。

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

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

但是我怎样才能指定网络名称,以便它不会在其前面添加文件夹名称?

谢谢。

【问题讨论】:

    标签: docker docker-compose docker-networking


    【解决方案1】:

    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
    

    【讨论】:

    • 非常有用的参考资料,从来不知道网络name属性。我以前用过container_name,但不得不来这里刷新一下使用它的想法。是否可以使用 -p flag 更新示例,我在 docker-compose up --help 上没有看到任何参考,据我所知,-p for docker run 是用于端口?
    • 是的,是正确的 -p 用于端口,这可以在 docker compose 中使用端口完成: - '30050:8161' 小心对齐。您可以使用带有 docker-compose 扩展的 vs 代码来轻松完成这项工作
    • 重点是您的回答提到了-p 及其用法,有点暗示您可以使用它来创建--project-name,这是两个不同的概念。只是想尝试为未来的读者(和我)澄清这一点。
    【解决方案2】:

    您必须在 docker-compose 项目目录的根目录中放置一个“.env”文件。

    COMPOSE_PROJECT_NAME=MyFancyProject
    

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

    如果你不使用docker-compose,你可以使用“-p”参数在docker run上设置这个。

    【讨论】:

    • 那么 docker 会在前面加上项目名称而不是文件夹名称,对吧?
    • 郑重声明,docker-compose 命令行也支持-p 参数。
    • 为什么我不能只在撰写文件中指定名称?这是没有意义的。撰写文件的目的是描述项目对吗?项目名称不是变量,其他的东西可能依赖于它是一个静态值,以便它可以被引用。
    猜你喜欢
    • 2017-08-02
    • 1970-01-01
    • 2023-03-07
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2018-09-06
    • 2019-03-30
    相关资源
    最近更新 更多