开发实战指南
Docker Compose 变量:插值与容器环境不同
区分 YAML 解析、Compose 插值与真正传入容器的环境变量。
分开三个处理层
YAML 定义文档结构,Compose 再按规则解析插值并配置容器环境。
YAML 接受 ${PORT} 字符串不证明 Compose 可以解析或取得该变量。
services:
app:
image: demo:${TAG:-latest}
environment:
PORT: "${PORT:-8080}"明确默认与必需形式
Compose 支持默认值与必需值表达式,未设置和空值的处理依赖具体操作符。
带冒号的默认形式在未设置或为空时取默认,不带冒号则对空值有不同处理。
${VAR:-default} → default if unset or empty
${VAR-default} → default if unset
${VAR:?message} → error if unset or empty插值来源不会自动进入容器
项目 .env 可供 Compose 插值,但不会自动把所有条目传入容器。
按需使用 environment 或 env_file 配置容器,双美元符号可保留美元符号用于后续处理。
command: "echo $HOSTNAME"
Compose leaves $HOSTNAME for the container-side command.用真实 Compose 环境验收
本站转换和检查配置文本,不执行完整本地 Compose 环境及优先级链。
在目标环境运行 docker compose config 检查最终配置,共享样例保持合成,不公开展开后的秘密。