TGTGInsighttelegram intelligenceLIVE / telegram public index
← Hypercube's Channel
Hypercube's Channel avatar

TGINSIGHT POST

Post #170

@SmartHypercube_channel

Hypercube's Channel

Views444帖子阅读量
发布11月13日2024/11/13 13:16
Post content

帖子内容

很多语言有自己的方案来管理和切换编译器/工具链版本,但具体设计和实现质量各不相同,我一直觉得很不好用。最近研究了一下通过 VS Code 的 Dev Container 功能来为每个项目建立完全隔离的环境,发现其实挺简单的: 在项目目录中创建 .devcontainer/devcontainer.json,内容是 {"image":"mcr.microsoft.com/devcontainers/base:debian-12"}。用 VS Code 打开目录,右下角会自动提示要不要用 Dev Container 打开。用 Dev Container 打开后,会在一个专门的容器里,项目目录会被 bind mount 进这个容器,终端是容器里的终端,可以随便安装工具链和依赖,不会影响宿主机,如果有进程开始监听端口,VS Code 还会自动提醒并转发到宿主机上。 这个 image 可以换成任何自己喜欢的 Docker image,但最好是非 root 用户的,不然容器里会是 root 用户,创建的文件宿主机上不方便操作。只要是非 root 用户,VS Code 会负责把 uid 改成和宿主机上相同。如果有更复杂的定制需求,还可以创建 .devcontainer/Dockerfile 文件并修改 devcontainer.json,详询 ChatGPT。 这个方案令我特别满意的点就是项目目录在宿主机上,所以仍然可以用宿主机上的软件工具查看和修改各种文件,不像 Remote-SSH 那样想做各种操作都不太方便。但是这个方案也只适用于“编译器放在隔离环境里就能运行,只需要把编译结果带出来”的情况,对于 Python 这样的语言,要在宿主机上运行最终程序,宿主机上就必须装了正确版本的 Python,这种隔离环境用处很有限。