如何无需在docker-compose.yml中定义即可将.env所有环境变量传入容器?
Docker Compose 批量导入.env环境变量到容器
有两种方式可以实现无需逐个定义,直接将.env文件中的所有环境变量传入容器:
方法一:使用env_file字段(推荐)
直接在docker-compose.yml中指定.env文件路径,该文件内的所有变量会自动注入容器环境:
services: my_app: restart: always image: some_image hostname: my_app env_file: - .env
- 如果.env文件不在当前目录,可填写相对路径(如
./config/.env)或绝对路径 - 此方式会将.env内的所有变量完整传入容器,无需额外配置
方法二:利用环境变量批量传递(适用于已加载到主机环境的变量)
如果已经通过source .env将.env变量加载到当前shell环境,可通过以下方式批量传入容器:
services: my_app: restart: always image: some_image hostname: my_app environment: - "${!ENV*}"
- 这种方式依赖主机shell已加载对应变量,不如
env_file直接可靠,仅作为补充方案
注意:Docker Compose默认会自动读取当前目录的.env文件用于替换compose配置中的变量(如
${ENV1}),但这不会自动将变量传入容器,必须通过上述两种方式显式配置。
内容的提问来源于stack exchange,提问作者James Lin
相关产品推荐
相关产品推荐

