docker-compose文件属性(5)顶部元素configs
·
配置使服务能够自行调整其行为,而无需重新构建 Docker 镜像。与卷一样,配置会被以文件的形式挂载到容器的文件系统中。在 Linux 容器中,挂载点的位置默认为 /<配置名称>;在 Windows 容器中则为 C:\<配置名称>
只有在 services 顶层元素中包含 configs 属性且该属性明确授予权限的情况下,服务才能访问配置信息。
默认情况下,配置由运行容器命令的用户所拥有,但可通过服务配置进行更改。其权限为可被所有人读取(模式为 0444),除非服务配置中另有规定需进行更改。
顶部元素 configs 声明用于定义或引用 Compose 应用程序中分配给服务的配置数据。这些配置的数据来源可以是file、environment、content 或者 external。
- file:配置是根据指定路径下的文件内容创建的。
- environment:配置内容是根据环境变量的值创建的。在 Docker Compose 版本 2.23.1 中引入。
- content:内容是通过内联值创建的。在 Docker Compose 版本 2.23.1 中引入。
- external:如果设置为 true,则 external 表示此配置已经创建。Compose 不会尝试创建它,如果它不存在,则会引发错误。
- name:容器引擎中用于查找配置对象的名称。此字段可用于引用包含特殊字符的配置。名称将按原样使用,不会与项目名称一起进行命名空间设置。
示例1:当应用被部署的时候,Docker 会创建名称为 _http_config的配置,通过将 httpd.conf 文件的内容注册为配置数据。
configs:
http_config:
file: ./httpd.conf
或者,可以将 http_config 宣告为外部资源。Compose 会查找 http_config 以将配置数据提供给相关服务。
configs:
http_config:
external: true
示例2:外部配置查找也可以通过指定 name 来使用一个不同的键。
以下示例是对之前示例的修改,它使用参数“HTTP_CONFIG_KEY”来查找配置信息。实际的查找键是在部署时通过变量的插值来设置的,但在容器中则以固定代码形式的“http_config”标识来呈现。
configs:
http_config:
external: true
name: "${HTTP_CONFIG_KEY}"
示例3:在应用程序部署时会创建 _app_config 文件,通过将内联内容注册为配置数据来实现。这意味着 Compose 在创建配置时会自动推断变量,从而允许你根据服务配置来调整内容:
configs:
app_config:
content: |
debug=${DEBUG}
spring.application.admin.enabled=${DEBUG}
spring.application.name=${COMPOSE_PROJECT_NAME}
示例4:在应用程序部署时会创建 _simple_config,其配置数据使用的是环境变量的值。这对于那些不需要进行格式化处理的简单配置值非常有用:
configs:
simple_config:
environment: "SIMPLE_CONFIG_VALUE"
如果 external 属性设置为 true,那么除了 name 之外的所有其他属性均无关紧要。如果 compose 检测到任何其他属性,它就会将该compose 文件判定为无效。
更多推荐



所有评论(0)