如何使用 env 文件将环境变量传递到独立的 vscode 远程容器中?

How can I use an env file to pass environment variables into a standalone vscode remote container?

我正在使用独立的 Go vscode 远程容器进行开发,并希望将环境变量从文件加载到容器中。

我能找到的所有示例都在使用 Docker Compose 及其 env_file option,但使用 Docker Compose 对于单个容器来说似乎有点过分了。有什么方法可以在不使用 Docker Compose 的情况下实现这一目标?

在项目的 .devcontainer 目录中添加一个声明环境变量的文件,在本例中为 .env:

D:.
│   .gitignore
│   README.md
│
├───.devcontainer
│      .env 
│       devcontainer.json
│       Dockerfile
│
└───.vscode
        settings.json

.env:

MY_URL=https://my.com/
MY_SECRET=unicorns

然后在您的 devcontainer.json 中,您可以为 Docker CLI run 命令定义 runArgs that pass the .env file as an env-file 参数。这里使用扩展到本地源代码的包含目录的 ${localWorkspaceFolder} 变量:

devcontainer.json:

{
    "name": "Go",
    "dockerFile": "Dockerfile",
    "runArgs": [
        "--env-file", "${localWorkspaceFolder}/.devcontainer/.env"
    ], 

    ...
}