配置顶级元素

配置允许服务调整其行为,而无需重建 Docker 镜像。

仅当顶级元素configs中的属性显式授予服务时,服务才能访问配置 。services

与卷一样,配置作为文件安装到服务容器的文件系统中。容器内挂载点的位置默认为/<config-name>Linux 容器和C:\<config-name>Windows 容器。

默认情况下,配置:

  • 由运行容器命令的用户拥有,但可以被服务配置覆盖。
  • 具有世界可读权限(模式 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可以声明为外部。 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。实际的查找键是在部署时通过 变量插值http_config设置的,但作为硬编码的 ID 暴露给容器。

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

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