Configs 顶级元素

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

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

默认情况下,配置:

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

顶级声明定义或引用授予 Compose 应用程序中的服务的配置数据。配置的源是 或 。configsfileexternal

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

示例 1

<project_name>_http_config在部署应用程序时创建, 将 的内容添加为配置数据。httpd.conf

configs:
  http_config:
    file: ./httpd.conf

或者,可以声明为 external。Compose 会向上查找以向相关服务公开配置数据。http_confighttp_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

以下内容 example 修改前一个以使用参数 查找配置 。实际的查找键在部署时通过 变量,但作为硬编码 ID 公开给容器。HTTP_CONFIG_KEYhttp_config

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

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