docker-compose.yml .env用法
1.容器内加载source .env
满足几个条件:
.env文件必须存在于容器内- COPY 进镜像
- 或通过 volume 挂载
方式A:构建时复制进镜像
1 | COPY .env /app/.env |
方式B:运行时挂载
1 | services: |
entrypoint.sh 推荐写法
直接 source .env 容易因格式问题失败,推荐:
1 |
|
关键点:
set -a自动 export 变量- 容器内所有进程都能读取
exec "$@"保证信号传递正常(容器优雅退出)
2.env写法
.env 最好只保留:
KEY=value
compose .env 与容器 .env 读取阶段
- compose 读取
.env是在 宿主机阶段, - entrypoint 读取
.env是在 容器阶段。
二者不是同一个生命周期。
3.加载.env
3.1用于docker-compose.yml变量替换
docker-compose up -d
自动读取当前目录下.env 用于替换 x=${y}
3.2容器内export作为系统变量
env_file:
- ./.env