环境变量
您可以使用以下选项之一在容器中设置环境变量,而无需更改容器镜像。
您应该验证设置中是否选中了 终端 > 集成: 继承 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) 运行 开发容器:重新构建容器 来获取更改。否则,请运行 开发容器:在容器中打开文件夹... 以连接到容器。
选项 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
并添加相对于 Docker Compose 文件的devcontainer.env
文件的路径version: '3' services: your-service-name-here: env_file: devcontainer.env # ...
docker compose
会自动选取包含 docker-compose.yml
的文件夹中名为 .env
的文件,但您也可以在其他位置创建一个文件。
如果您已经构建了容器并连接到它,请从命令面板 (F1) 运行 开发容器:重新构建容器 来获取更改。否则,请运行 开发容器:在容器中打开文件夹... 以连接到容器。