docker-compose .env vs direnv .envrc

时间:2017-12-19 03:20:18

标签: docker docker-compose environment-variables direnv

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

direnv使用的.envrc文件使用export

export NODE_ENV=development

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

NODE_ENV=development

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

2 个答案:

答案 0 :(得分:2)

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

./secrets中定义你的变量,因为docker-compose需要它们(没有导出):

foo=bar
secret_var=secret
...

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

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

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

答案 1 :(得分:1)

这是基于this answer的评论链的替代解决方案

direnv ships with a stdlib可用于支持经典的“ dotenv”设置

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

这在使用支持dotenv样式的docker之类的容器系统时特别有用