docker-compose .env vs direnv .envrc



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

direnov使用的.envrc文件export

export NODE_ENV=development

将同一个文件与 docker-compose 一起使用似乎不起作用,只是没有export我得到了变量的值。

NODE_ENV=development

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

这是基于此答案的注释链的替代解决方案

Direnov附带了一个stdlib,可用于支持经典的"dotenv"设置

# myproject/.envrc - name of current file
# Usage: 
# dotenv <optionalPathToDotEnvFile> or defaults to .env
dotenv
# myproject/.env
FOO=BAR

这在使用像Docker这样支持Dotenv风格的容器系统时特别有用。

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

像这样启用它:

$HOME/.config/direnv/direnv.toml

[global]
load_dotenv = true

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

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

foo=bar
secret_var=secret
...

./envrc中将它们导出到您的外壳中:

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

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

相关内容

  • 没有找到相关文章

最新更新