【问题标题】:Is there a way to define the namespace your Compose Swarm lives in, in the yaml?有没有办法在 yaml 中定义 Compose Swarm 所在的命名空间?
【发布时间】:2021-05-11 20:36:53
【问题描述】:

我有一个简单的 docker-compose 文件,用于启动我的容器。我希望有另一个包含其他可选容器的 yaml 文件。它可以存在于单独的目录中。我的目标是找到一种方法来强制创建的群的命名空间,使它们存在于同一个网络/使用空间中,这样它们就可以相互交谈。

compose1.yaml
  services:
    web:
      build: .

compose2.yaml
  services:
    web1:
      build: .

因此,如果我同时运行这两个文件,它们将被添加到它们所在的文件夹之前,在我的情况下:分别为 a 和 b。

我想确保它们一起流动,尽管它们不在同一个文件层次结构中。

我一直在查看 docker-compse 文档中的关键字,不确定在 yaml 文件中执行此操作的最佳方法是什么,但在 CLI 中注意到,可能能够更新各种名称。

如何做到这一点?

注意:我还在 b 目录下创建了第三个文件,它是 compose2.yaml 的同级文件。所以我可以单独运行它们,它们工作得很好。

a/
  compose.yaml
b/
  compose2.yaml
  another.yaml

所以我已经能够通过这样做将它们合并在一起:cd /b/ && docker-compose -f compose2.yaml -f another.yaml up -d 一起运行 2 个文件,它们存在于 B 命名空间下。同样,我也可以按顺序运行它们,而不是在 1 个命令中引用它们。

所以我的问题是我该怎么做:

docker-compose --namespace test compose.yaml up
docker-compose --namespace test compose2.yaml up

这样我可以使用 docker 相应地查看项目吗?看来我需要考虑从第一个共享父文件夹下运行命令?

所以如果 ab 在测试中存在,我可以这样做:

cd /test
docker-compose -f a/compose.yaml up -d
docker-compose -f b/compose2.yaml up -d

那么我的服务将被列为:test_web、test_db-box 等。

【问题讨论】:

    标签: docker docker-compose yaml docker-swarm


    【解决方案1】:

    所以我发现一个人的命名空间是另一个人的项目名称。

    话虽如此,在了解细微差别之后,项目名称 ( -p | --project-name ) 是撰写服务的前缀。

    docker-compose --project-name foo -f a/compose.yaml up
    docker-compose --project-name foo -f b/compose2.yaml up
    

    这将创建服务:foo_web_1

    其格式为:%{prepend}%{servicename}%{number}

    那么问题是,我们能否找到一种方法来实现此 CLI 属性以在 YAML 文件中工作,可能作为文件的配置选项。 Docker Compose 网站信息指出,您可以提供环境变量 (_COMPOSE_PROJECT_NAME_) 来更改项目名称的默认值,而不是从 Compose YAML 中更改。

    如果我想启动多个撰写文件,在特定项目下我想做的就是用 BASH 或 SHELL 脚本封装它。

    #/bin/bash
    export COMPOSE_PROJECT_NAME=ultimate-project
    docker-compose -f a/compose.yaml up -d
    docker-compose -f b/compose2.yaml up -d
    

    这将创建服务:

    ultimate-project_web_1
    ultimate-project_web2_1
    

    【讨论】:

      猜你喜欢
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 2019-08-26
      相关资源
      最近更新 更多