docker-compose .env 与 direnv .envrc

docker-compose .env vs direnv .envrc

我们一直在使用 direnv for quite some time now to automatically load environment variables in a specific folder. And since version 3, docker-compose seems to support .env files

direnv使用的.envrc个文件使用export:

export NODE_ENV=development

将同一个文件与 docker-compose 一起使用似乎不起作用,只有在没有 export 的情况下我才能获得变量的值。

NODE_ENV=development

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

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

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

foo=bar
secret_var=secret
...

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

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

set -a 默认导出所有内容,set +a 之后关闭此功能。

这是一个基于

评论链的替代解决方案

direnv ships with a stdlib 可用于支持经典 'dotenv' 设置

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

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

2022 更新:direnv now supports .env 个文件以及 .envrc 个文件。

像这样启用它:

$HOME/.config/direnv/direnv.toml

[global]
load_dotenv = true