配置顶层元素

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

服务只能在 `services` 顶层元素中的 `configs` 属性显式授予后才能访问配置。

默认情况下,配置

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

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

  • `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` 可以声明为外部。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

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

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

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

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

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.