配置顶级元素
目录
配置允许服务调整其行为,而无需重新构建 Docker 镜像。与卷一样,配置作为文件挂载到容器的文件系统中。容器内挂载点的位置在 Linux 容器中默认为 /<config-name>,在 Windows 容器中默认为 C:\<config-name>。
服务只有在 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 声明为 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
外部配置查找也可以通过指定一个 name 来使用不同的键。
下面的示例修改了前一个示例,使用参数 HTTP_CONFIG_KEY 查找配置。实际的查找键是在部署时通过变量的插值设置的,但作为硬编码 ID http_config 暴露给容器。
configs:
http_config:
external: true
name: "${HTTP_CONFIG_KEY}"如果将 external 设置为 true,则除 name 之外的所有其他属性都无关紧要。如果 Compose 检测到任何其他属性,它会将该 Compose 文件视为无效而拒绝。