繁体   English   中英

docker-compose.env vs direnv.envrc

[英]docker-compose .env vs direnv .envrc

我们已经使用direnv很长一段时间来在特定文件夹中自动加载环境变量。 从版本 3 开始,docker-compose 似乎支持.env 文件

direnv 使用的.envrc文件使用export

export NODE_ENV=development

使用与 docker-compose 相同的文件似乎不起作用,只有没有export我才能得到变量的值。

NODE_ENV=development

关于如何将其统一为单个.env.envrc文件或 direnv 的替代方案的任何想法?

这是基于此答案的评论链的替代解决方案

direnv 附带一个 stdlib ,可用于支持经典的“dotenv”设置

# myproject/.envrc
# dotenv <optionalPathToDotEnvFile>
dotenv
# myproject/.env
FOO=BAR

这在使用 docker 等支持 dotenv 风格的容器系统时特别有用

我使用以下设置在从.envrc开发期间使用变量,但使用.envrc docker-compose文件进行部署:

./secrets定义变量,因为./secrets -compose 需要它们(不导出):

foo=bar
secret_var=secret
...

./envrc它们导出到您的 shell:

#!bash
set -a
. ./secrets
set +a

set -a使所有内容默认导出, set +a之后将其关闭。

2022 年更新:除.envrc文件外,direnv 现在还支持.env文件。

像这样启用它:

$HOME/.config/direnv/direnv.toml

[global]
load_dotenv = true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM