通过 VS Code 给容器设置环境变量

未匹配的标注

可以在不修改容器镜像的情况下,使用以下选项修改环境变量。

注意:需要确认 Terminal > Integrated: Inherit Env 选项在设置种,已经勾选了,否则你所设置的变量是不会出现在集成终端中的。这个设置默认是勾选的。

从图中的介绍中,可以看出:这个选项决定了新建 shell 是否要从 VS Code 继承环境变量。shell 会去溯源一个 login shell ,以确保 $PATH 和其它开发变量被初始化。这个选项在 Windows 上是无效的。

选项1:添加个人的环境变量

根据 devcontainer.json 中所引用的内容不同,方式会有所不同。

引用的是 Dockerfile 或 image:

往 devcontainer.json 添加 containerEnv 属性来设置应用于整个容器的变量;添加 remoteEnv 来设置 VS Code 和 相关子进程(包括终端,任务,调试等等):

例子中表达了:containerEnv 可以引用本地环境变量,而 remoteEnv 可以引用本地环境变量,以及现有的容器变量。

因为我们改变了 devcontainer.json 的内容,所以我们需要重构容器才能使其生效。如果设置了环境变量,而没有重建容器的话,下次打开的时候,VS Code 还会给出如下的提示,建议你重建容器。

重建完容器,就可以打开 terminal 对环境变量进行验证了:

引用的是 Docker Compose:

因为 Docker Compose 本身就对更新容器范围内的变量提供了支持,所以 devcontainer.json 只支持 remoteEnv :

同样,remoteEnv 既支持本地变量,又支持现有的容器变量。

可以根据下述方式在 docker-compose.yml 中进行更新或者扩展服务的配置,来更新应用于整个容器(即容器级别)的变量:

如果容器已经构建过,容器也连上了,可以在 Command Palette 中,运行 Remote-Containers: Rebuild Container 来使变更生效。没连上的话,可以运行 Remote-Containers: Open Folder in Container 来连接容器。

选项2:使用一个 env 文件

如果有大量的环境变量需要设置,可以使用 .env 文件。VS Code 会自动挑选工作区根路径的 .env 文件,不过你也可以在其它位置创建文件。

首先,在源码树种,创建一个环境文件。比如 .devcontainer/devcontainer.env 文件:

随后,还是根据 devcontainer.json 文件所引用的内容不同,分别操作。

如果引用的是 Dockerfile 或 image:

编辑 devcontainer.json 文件,添加一个执行 devcontainer.env 的路径:

runArgs 指的是启动容器所需的参数。

如果引用的是 Docker Compose:

编辑 docker-compose.yml 文件,相对于 Docker Compose 文件的位置,添加一条指向 devcontainer.env 文件的路径:

如果已经连上了容器,从 Command Palette 运行 Remote-Containers: Rebuild Container 来让变更生效;没有连上的话,运行 Remote-Containers: Open Folder in Container 命令来连接容器。

需要注意的是:以 .env 文件的方式来创建环境变量的话,是不能去引用其它变量的。只能使用纯字符串。

好了。使用 VS Code 设置容器的环境变量就是以上这些内容了。喜欢的本文的话,欢迎点赞,评论,转发。欢迎关注我的账号,我们下期不见不散。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
秦晓武
讨论数量: 0
发起讨论 只看当前版本


暂无话题~