我们已经使用default value很长一段时间来自动加载特定文件夹中的环境变量。从版本3开始,docker-compose似乎direnv。
direnv使用的.envrc
文件使用export
:
export NODE_ENV=development
使用与docker-compose相同的文件似乎不起作用,只有export
才能获得变量的值。
NODE_ENV=development
有关如何将其统一到单个.env
或.envrc
文件或替代direnv的任何想法?
答案 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之类的容器系统时特别有用