现已发布!阅读 10 月份的更新功能和修复内容。

环境变量

您可以通过以下选项之一在容器中设置环境变量,而无需更改容器镜像。

您应该验证终端 > 集成:继承 Env 在设置中是否已选中,否则您设置的变量可能不会出现在集成终端中。此设置默认情况下已选中。

选项 1:添加单个变量

根据您在devcontainer.json中引用的内容

  • Dockerfile 或镜像:将containerEnv属性添加到devcontainer.json以设置应应用于整个容器的变量,或者将remoteEnv设置为为 VS Code 和相关子进程(终端、任务、调试等)设置变量。

    "containerEnv": {
        "MY_CONTAINER_VAR": "some-value-here",
        "MY_CONTAINER_VAR2": "${localEnv:SOME_LOCAL_VAR}"
    },
    "remoteEnv": {
        "PATH": "${containerEnv:PATH}:/some/other/path",
        "MY_REMOTE_VARIABLE": "some-other-value-here",
        "MY_REMOTE_VARIABLE2": "${localEnv:SOME_LOCAL_VAR}"
    }
    

    如本示例所示,containerEnv可以引用本地变量,而remoteEnv可以引用本地变量和现有容器变量。

视频:在开发容器中修改 PATH



  • Docker Compose:由于 Docker Compose 内置支持更新容器范围的变量,因此devcontainer.json中只支持remoteEnv

    "remoteEnv": {
        "PATH": "${containerEnv:PATH}:/some/other/path",
        "MY_REMOTE_VARIABLE": "some-other-value-here",
        "MY_REMOTE_VARIABLE2": "${localEnv:SOME_LOCAL_VAR}"
    }
    

    如本示例所示,remoteEnv可以引用本地变量和现有容器变量。

    要更新应用于整个容器的变量,请更新(或扩展)您的docker-compose.yml,在适当的服务中添加以下内容

    version: '3'
    services:
      your-service-name-here:
        environment:
          - YOUR_ENV_VAR_NAME=your-value-goes-here
          - ANOTHER_VAR=another-value
         # ...
    

如果您已经构建了容器并连接到它,请从命令面板(F1)运行Dev Containers: Rebuild Container来获取更改。否则,运行Dev Containers: Open Folder in Container...连接到容器。

选项 2:使用 env 文件

如果您需要设置大量的环境变量,可以使用.env文件。

首先,在您的源代码树中的某个位置创建一个环境文件。例如,此.devcontainer/devcontainer.env文件

YOUR_ENV_VAR_NAME=your-value-goes-here
ANOTHER_ENV_VAR_NAME=your-value-goes-here

接下来,根据您在devcontainer.json中引用的内容

  • Dockerfile 或镜像:编辑devcontainer.json并添加一个指向devcontainer.env的路径

    "runArgs": ["--env-file",".devcontainer/devcontainer.env"]
    
  • Docker Compose: 编辑docker-compose.yml并添加一个指向devcontainer.env文件的路径,该路径相对于 Docker Compose 文件

    version: '3'
    services:
      your-service-name-here:
        env_file: devcontainer.env
        # ...
    

docker compose会自动获取包含docker-compose.yml的文件夹中的名为.env的文件,但您也可以在其他位置创建它。

如果您已经构建了容器并连接到它,请从命令面板(F1)运行Dev Containers: Rebuild Container来获取更改。否则,运行Dev Containers: Open Folder in Container...连接到容器。

视频:从 .env 文件加载变量