Configs 顶层元素

Configs 允许服务调整其行为,而无需重新构建 Docker 镜像。与卷一样,Configs 作为文件挂载到容器的文件系统中。在 Linux 容器中,挂载点的默认位置是 /<config-name>;在 Windows 容器中,默认位置是 C:\<config-name>

服务只能在 services 顶层元素内的 configs 属性明确授权时访问 Configs。

默认情况下,config

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

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

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

示例 1

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

configs:
  http_config:
    file: ./httpd.conf

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

configs:
  http_config:
    external: true

示例 2

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

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

示例 3

External 配置查找也可以通过指定 name 使用不同的键。

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

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

如果 external 设置为 true,则除 name 之外的所有其他属性都无关紧要。如果 Compose 检测到任何其他属性,它会将 Compose 文件视为无效并拒绝。

页面选项