是否可以通过标准输入为docker-compose指定env-file配置?
docker-compose 无需实体env文件传入指定前缀环境变量的方案
有两种成熟的实现方式,均无需创建实体env文件:
方案1:沿用进程替换逻辑(和docker run用法对齐)
docker-compose支持直接在命令行通过--env-file参数接收进程替换的临时文件输入,用法如下:
docker-compose --env-file <(env | grep ^APP_) up -d
注意:
--env-file是docker-compose的全局参数,必须放在up/run等子命令之前,不能写在子命令后面。
该方法依赖当前shell支持进程替换特性,仅兼容bash、zsh等常用shell,sh、dash等极简shell无法使用。
方案2:直接在docker-compose.yml中匹配宿主机环境变量(更简洁)
1.29及以上版本的docker-compose支持环境变量通配符匹配,你可以直接在服务的environment配置段声明要导入的前缀变量,不需要额外传参:
services: 你的服务名: # 直接导入宿主机所有APP_前缀的环境变量 environment: - APP_*
配置完成后直接执行docker-compose up -d即可自动导入所有匹配的环境变量。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

