环境变量
您可以使用以下选项之一在容器中设置环境变量,而无需更改容器镜像。
您应确保在设置中勾选了 Terminal > Integrated: Inherit Env(终端 > 集成:继承环境),否则您设置的变量可能不会显示在集成终端中。此设置默认已勾选。
选项 1:添加单个变量
具体取决于您在 devcontainer.json 中引用的内容
-
Dockerfile 或镜像:在
devcontainer.json中添加containerEnv属性以设置适用于整个容器的变量,或添加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) 运行 开发容器:重建容器 以应用更改。否则,运行 开发容器:在容器中打开文件夹... 以连接到容器。