12

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

direnv 使用的.envrc文件使用export

export NODE_ENV=development

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

NODE_ENV=development

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

4

2 回答 2

14

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

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

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

这在使用支持 dotenv 样式的容器系统(如 docker)时特别有用

于 2019-11-14T17:04:48.030 回答
5

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

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

foo=bar
secret_var=secret
...

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

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

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

于 2018-02-01T09:19:17.587 回答