关于docker-compose.yml中${{ variable }}指令的含义与用法咨询
Docker Compose 中
${{ variable }} 的含义与用法 含义
${{ variable }} 是 Docker Compose 自带的语法,专门用来在配置文件里引用**自定义扩展字段(Extension Fields)**的值。扩展字段是 Compose 文件里以 x- 开头的自定义配置项,核心目的是把重复的配置片段抽出来复用,让整个 Compose 文件更简洁,维护起来也更方便。
具体用法
1. 先定义扩展字段
在 Compose 文件的顶层写以 x- 开头的扩展字段,比如把多个服务共用的环境变量、镜像配置抽出来:
# 定义多个服务共用的数据库环境变量 x-common-db-env: - MYSQL_ROOT_PASSWORD=root123 - MYSQL_DATABASE=app_db # 也可以定义完整的服务配置片段 x-base-db-service: image: mysql:8.0 restart: always environment: ${{ x-common-db-env }}
2. 用 ${{ }} 引用扩展字段
在具体的服务配置里直接通过 ${{ 扩展字段名 }} 调用:
services: # 业务数据库服务 app-db: <<: ${{ x-base-db-service }} volumes: - app-db-data:/var/lib/mysql # 测试数据库服务,复用相同的基础配置 test-db: <<: ${{ x-base-db-service }} environment: # 在复用的基础上追加新变量 - ${{ x-common-db-env }} - MYSQL_USER=test_user volumes: - test-db-data:/var/lib/mysql volumes: app-db-data: test-db-data:
注意要点
- 扩展字段必须以
x-开头,不然 Compose 会判定为无效的顶层配置。 ${{ }}只能引用顶层的扩展字段,没法嵌套引用某个服务内部的配置项。- 这个语法从 Docker Compose 1.27.0 版本才开始支持,用低版本的话得先升级。
- 别把它和环境变量引用的
${VARIABLE}搞混,前者是用自定义扩展字段,后者是读系统/容器的环境变量。
内容的提问来源于stack exchange,提问作者Игорь
相关产品推荐
相关产品推荐

