docker-compose 不读取 WSL 内部 Ubuntu 上的环境变量
docker-compose not reading environment variables on Ubuntu inside WSL
我有一个 Docker 项目需要 运行 的环境变量。它 运行 在基于 Unix 的系统上运行良好,但现在我 运行 在 Windows 10 机器内的 WSL 中使用它,但它们不工作。
我有一个包含环境变量 .envrc
的文件,如下所示:
export VAR_1=var1
export VAR_2=var2
在 Ubuntu 上,在 WSL 内部,如果我 运行 source .envrc
,变量会在 Ubuntu.
上正确加载
如果我 运行 printenv
,所有变量都按预期加载和列出。
在我的 docker-compose.yml
文件中,变量的访问方式如下:
VARIABLE_1: ${VAR_1}
VARIABLE_1: ${VAR_2}
由于某些原因,当我使用 docker-compose up my_container
时变量没有正确加载。
如果我在 docker-compose.yml
文件中对变量进行硬编码,则加载它们没有问题。
VARIABLE_1: var1
VARIABLE_1: var2
是否需要进行任何其他配置以确保正确加载变量?
原来是 Windows 上的行尾与 Linux 搞混了。我只需要使用为 Linux.
配置的文本编辑器保存 .envrc
文件
找出解决方案:
我使用 printenv
检查环境变量是否在 Linux 中正确加载。
然后我使用 docker-compose config
来确保 Docker 从环境中获取变量。
这些命令让我看到 Linux 正在从 Windows 拿起 \r
车厢 return,这就是问题所在。
我有一个 Docker 项目需要 运行 的环境变量。它 运行 在基于 Unix 的系统上运行良好,但现在我 运行 在 Windows 10 机器内的 WSL 中使用它,但它们不工作。
我有一个包含环境变量 .envrc
的文件,如下所示:
export VAR_1=var1
export VAR_2=var2
在 Ubuntu 上,在 WSL 内部,如果我 运行 source .envrc
,变量会在 Ubuntu.
如果我 运行 printenv
,所有变量都按预期加载和列出。
在我的 docker-compose.yml
文件中,变量的访问方式如下:
VARIABLE_1: ${VAR_1}
VARIABLE_1: ${VAR_2}
由于某些原因,当我使用 docker-compose up my_container
时变量没有正确加载。
如果我在 docker-compose.yml
文件中对变量进行硬编码,则加载它们没有问题。
VARIABLE_1: var1
VARIABLE_1: var2
是否需要进行任何其他配置以确保正确加载变量?
原来是 Windows 上的行尾与 Linux 搞混了。我只需要使用为 Linux.
配置的文本编辑器保存.envrc
文件
找出解决方案:
我使用 printenv
检查环境变量是否在 Linux 中正确加载。
然后我使用 docker-compose config
来确保 Docker 从环境中获取变量。
这些命令让我看到 Linux 正在从 Windows 拿起 \r
车厢 return,这就是问题所在。