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
我们一直在使用 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