【问题标题】:Is it possible to define constants in .yml files?是否可以在 .yml 文件中定义常量?
【发布时间】:2021-06-23 06:47:00
【问题描述】:

我正在编写一个 docker-compose.yml 并且有几个容器需要将某些环境变量设置为相同的值(即 CONTACT_EMAIL)。

目前我的 docker-compose.yml 看起来像这样:

version: '2.0'
    services:
        service1:
            ...
            environment:
                CONTACT_EMAIL: webmaster@example.com
            ...
        service2:
            ...
            environment:
                CONTACT_EMAIL: webmaster@example.com
            ...
        service3:
            ...
            environment:
                CONTACT_EMAIL: webmaster@example.com
            ...

有没有办法在 yaml 文件中定义变量/常量 WEBMASTER 并将值分配给 CONTACT_EMAIL 环境变量?

或者是否可以为所有服务定义一个环境(在 yaml 文件中)

【问题讨论】:

    标签: docker docker-compose yaml


    【解决方案1】:

    你可以这样做:

    version: "2.0"
    
    x-common-env: &common_env
      CONTACT_EMAIL: webmaster@example.com
    
    services:
      service1:
        ...
        environment:
          <<: *common_env
    
      service2:
        ...
        environment:
          <<: *common_env
          ANOTHER_ENV: abc
    

    【讨论】:

    • 你能详细说明一下它是如何工作的吗?
    • 如您在上面看到的: - 首先,您创建一个名为 common_env 或任何您喜欢的名称的可重用定义,其中包含您以后可以重用的所有设置。 - 使用它时,使用语法&lt;&lt;: *common_env 打印您在该定义中的所有内容。使用:docker-compose config 测试语法
    • 有趣。而 x-common-env 标签没有实际用途?
    • 是的,只要确保它是独一无二的,并以x- 开头。如果你好奇,它被称为“扩展”。
    • @Benj 有关 YAML 锚点的更多详细信息:stackoverflow.com/q/41063361/1108305stackoverflow.com/q/6651275/1108305
    【解决方案2】:

    您可以使用 env 文件,创建 env 文件,在其中添加所有值,并在 docker-compose 的所有服务中引用同一个文件。 检查这个:https://docs.docker.com/compose/environment-variables/

    【讨论】:

    • 这实际上是我最终使用的
    猜你喜欢
    • 2022-10-20
    • 2021-12-03
    • 1970-01-01
    • 2020-05-13
    • 2011-05-17
    • 2019-02-19
    • 1970-01-01
    • 2021-04-27
    • 2020-09-23
    相关资源
    最近更新 更多