在 VS Code 中试用

环境变量

你可以使用以下任一选项在容器中设置环境变量,而无需修改容器镜像。

你应该验证设置中是否勾选了“终端 > 集成终端:继承环境变量”,否则你设置的变量可能不会出现在集成终端中。此设置默认是勾选的。

选项 1:添加单个变量

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

  • Dockerfile 或镜像:将 containerEnv 属性添加到 devcontainer.json,以设置应用于整个容器的变量,或者将 remoteEnv 属性添加到 devcontainer.json,以设置 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) 运行“开发容器:重新构建容器”以应用更改。否则,运行“开发容器:在容器中打开文件夹...”连接到容器。

选项 2:使用环境变量文件

如果你需要设置大量环境变量,可以使用 .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 并添加相对于 Docker Compose 文件的 devcontainer.env 文件路径

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

docker compose 将自动识别包含 docker-compose.yml 的文件夹中名为 .env 的文件,但你也可以在其他位置创建一个。

如果你已经构建并连接到容器,请从命令面板 (F1) 运行“开发容器:重新构建容器”以应用更改。否则,运行“开发容器:在容器中打开文件夹...”连接到容器。

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