首页/云/云与容器速查/Compose 环境变量与 env_file
本包目录(340 条)
云基础概念44 条计算与存储56 条网络与安全组33 条
容器与 Docker106 条
Kubernetes68 条容器排障33 条

Compose 环境变量与 env_file

三层来源要分清:宿主机环境参与 ${VAR} 插值;environment 把值注入容器;env_file 从文件批量注入。项目目录的 .env 默认只用于插值,不会自动进容器。

云与容器速查云更新于 2026-10-12
插值 ${VAR}在 compose.yaml 里引用宿主机环境或项目 .env 的值
默认值${VAR:-default};?? 报错语义、? 提示语义
environment以 map 或列表注入容器环境变量
env_file从文件批量注入,适合分组管理非敏感配置
优先级shell 环境 > .env 文件;容器内 environment 覆盖镜像 ENV

示例

示例
services:
  app:
    image: myapp:1.2.3
    environment:
      LOG_LEVEL: ${LOG_LEVEL:-info}
      DB_HOST: db
    env_file:
      - ./config/app.env
密钥别写进 compose.yaml 进仓库:用 .env(git 忽略)+ 部署环境注入,或改用 secrets 机制。

易错点

  • .env 放好却以为容器能读到:它只是插值来源,进容器要用 environment/env_file
  • docker compose run 时插值不生效:run 前 shell 变量没导出,留意优先级

数据来源与参考

  • Docker Docs:Environment variables in Compose

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌