配置顶级元素

配置允许服务在不重建Docker镜像的情况下调整其行为。与卷一样,配置作为文件挂载到容器的文件系统中。容器内挂载点的位置在Linux容器中默认为/,在Windows容器中默认为C:\

服务只有在services顶级元素中的configs属性明确授予时才能访问配置。

默认情况下,配置:

  • 由运行容器命令的用户拥有,但可以通过服务配置进行覆盖。
  • 具有全局可读权限(模式 0444),除非服务配置为覆盖此设置。

顶层的configs声明定义或引用了授予Compose应用程序中服务的配置数据。配置的来源可以是fileexternal

  • file: 配置是通过指定路径下的文件内容创建的。
  • environment: 配置内容是通过环境变量的值创建的。在Docker Compose版本 2.23.1中引入。
  • content: 内容是通过内联值创建的。在Docker Compose版本 2.23.1中引入。
  • external: 如果设置为true,external指定此配置已经创建。Compose不会尝试创建它,如果它不存在,将会发生错误。
  • name: 容器引擎中要查找的配置对象的名称。此字段可用于引用包含特殊字符的配置。名称将按原样使用,并且不会与项目名称一起作用域。

示例 1

_http_config 是在应用程序部署时创建的, 通过将 httpd.conf 的内容注册为配置数据。

configs:
  http_config:
    file: ./httpd.conf

或者,http_config 可以声明为外部。Compose 查找 http_config 以将配置数据暴露给相关服务。

configs:
  http_config:
    external: true

示例 2

_app_config 在应用程序部署时创建,通过将内联内容注册为配置数据。这意味着 Compose 在创建配置时会推断变量,从而允许您根据服务配置调整内容:

configs:
  app_config:
    content: |
      debug=${DEBUG}
      spring.application.admin.enabled=${DEBUG}
      spring.application.name=${COMPOSE_PROJECT_NAME}      

示例 3

外部配置查找也可以通过指定一个name来使用一个不同的键。

以下示例修改了前一个示例,以使用参数HTTP_CONFIG_KEY查找配置。实际的查找键在部署时通过变量的插值设置,但作为硬编码IDhttp_config暴露给容器。

configs:
  http_config:
    external: true
    name: "${HTTP_CONFIG_KEY}"

如果 external 设置为 true,除了 name 之外的所有其他属性都是无关的。如果 Compose 检测到任何其他属性,它会拒绝该 Compose 文件,认为其无效。