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,这就是问题所在。