繁体   English   中英

在docker中有没有办法创建交叉服务常量?

Is there way in docker compose to create the cross service constant?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有这样的文件:

service1:
   //some stuff
   environment:
  - "PROP=some_common_value"
service2:
  //some stuff
  environment:
  - "PROP=some_common_value"
service2:
  //some stuff
  environment:
  - "PROP=some_common_value"

我想设置具有相同值的属性。

我现在可以复制那个值。 看起来很糟糕。
在docker中有没有办法创建交叉服务常量?

1 个回复

有几种选择。 如果使用.env docker-compose而不是.env docker stack deploy ,则可以使用.env文件来设置变量。 或者使用docker-compose或swarm模式,您可以在shell中设置环境变量(通常是用于部署应用程序的shell脚本)。 在yaml内部,您将使用环境变量,如:

service1:
  environment:
  - PROP
service2:
  environment:
  - PROP
service2:
  environment:
  - PROP

或明确使用变量,如:

service1:
  environment:
  - PROP=${PROP}
service2:
  environment:
  - PROP=${PROP}
service3:
  environment:
  - PROP=${PROP}

如果您有.env文件并且想要执行.env docker stack deploy ,则可以使用以下任一方法编写处理:

# option 1, leaves vars set in shell
set -a && . .env && set +a && docker stack deploy -c compose.yml stack_name

# option 2, only sets vars for single command
env $(cat .env | xargs) docker stack deploy -c compose.yml stack_name

在上面的每一个中, .env只是你可以在shell中设置的变量:

PROP=some_common_value

下一个选项是使用锚点和别名的Yaml语法。 这从Yaml文件的一个部分复制到另一个部分(为了支持在service3中合并,我切换到键/值而不是数组语法):

service1:
  environment: &common_env
    PROP: "some_common_value"
service2:
  environment: *common_env
service3:
  environment:
    <<: *common_env
    PROP3: "unique value"

为了允许每个服务具有唯一值,Docker在最新版本的compose语法中添加了扩展字段 这使您可以定义与任何服务定义分开的锚点,并将其合并到每个服务中,每个服务都有自己的唯一值,例如:

version: '3.4'
x-common-env: &common_env
  PROP: "some_common_value"
services:
  service1:
    environment:
      <<: *common_env
      PROP1: "unique value 1"
  service2:
    environment:
      <<: *common_env
      PROP2: "unique value 2"
  service3:
    environment:
      <<: *common_env
      PROP3: "unique value 3"
2 在 f# 中有没有办法对列表执行交叉操作?

f# 中有没有办法对 f# 中两个列表的所有可能元素组合执行操作? 示例 然后 fun 加上 l1 l2 将执行[(1+4);(1+5);(1+6);(2+4);(2+5);(2+6);(3+4);(3+5);(3+6)] 因此输出: [5;6;7;6;7;8;7;8;9] 注意:我曾尝 ...

2020-04-19 11:30:03 2 64   f#
4 Emacs:有没有办法使用Emacs创建交互式脚本?

我是emacs的新手,但对我真正做的事情和节省的时间感到震惊(宏节省了很多时间)。 但我想知道有可能创建基于步骤的脚本,它要求用户输入并基于此执行代码。 例如,我可能想创建一个SQL查询,因此它会提示如下: 这只是一个想法的概述,但我很奇怪,因为这样的事情会有用。 有人提到了AWK ...

7 GUI中有没有办法?

您好,我正在尝试创建一个程序来确认具有激素水平的怀孕(GCH 它是字典的 int 参数),但在 GUI 中我收到此错误:“如果考试 ["GCH"] &gt;= 9 和考试 [ "genero"] == F:" TypeError: 字符串索引必须是整数 主要的: 图形用户界面: ...

8 如何创建交叉函数?

我正在制作1维间隔,我必须检查自我是否与另一个对象相交。 这是我到目前为止: 这是我的功能: 问题是这个函数只给出了我想要的答案的一半,是什么更好的方法来检查自我是否与其他人相交? ...

2017-05-01 03:12:06 2 58   python
10 在JIRA中有没有办法创建一个嵌套表?

JIRA文档没有提到创建嵌套表的方法 (或)至少我可以跨越多行获取列值的东西 即 我现在可以跨越的唯一方法是在列中包含空值,并让读者假定它代表该列的前一行值。 ...

2017-01-17 20:29:27 2 1229   jira
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM