提问人:Pascal 提问时间:11/10/2023 最后编辑:Pascal 更新时间:11/10/2023 访问量:16
重载或扩展开发容器配置文件(“devcontainer.json”)
overload or extend a Dev Container configuration file (`devcontainer.json`)
问:
我正在寻找扩展或重载已添加到存储库/版本控制的文件的可能性。devcontainer.json
当前
示例项目结构(可以使用 vscode 中的“Try a Dev Container -> Python3”命令进行复制):
.
├── .devcontainer
│ └── devcontainer.json
├── .git
│ ├── FETCH_HEAD
...
├── app.py
├── requirements.txt
...
现在,该示例的实际情况看起来有所不同,但为了简化起见,让我们假设它看起来像这样:devcontainer.json
{
"name": "Python 3",
"image": "mcr.microsoft.com/devcontainers/python:0-3.11",
"postCreateCommand": "pip3 install -r requirements.txt"
}
到目前为止,这很好。
尝试
我想保留该配置文件。但是对于我们使用的一些开发 PC,我们也提供了 GPU。现在当我添加
"runArgs": ["--gpus", "all"],
对于实际安装了 GPU 的 PC,一切都很好。
但是对于没有的 PC,会发生错误(记不清,关于 nvidia 容器的一些事情)。
目标/理念
我正在寻找可以保存在存储库中的配置之类的东西,比如上面的文件。还有类似扩展文件之类的东西,这是另外考虑的,比如.devcontainer.json
devcontainer.extend.json
最后,我会将 添加到该文件中,以便将个人的、与计算机相关的配置(如 )放在该文件中。devcontainer.extend.json
.gitignore
"runArgs": ["--gpus", "all"]
因此,该文件将不包含任何其他内容devcontainer.extend.json
"runArgs": ["--gpus", "all"],
这将在原始配置之后进行,以便它重载原始配置(在这种情况下,不完全是重载,而是通过添加另一个设置来扩展配置)
为了完整起见,当两个文件合并时,完整的 devcontainer 配置将如下所示:
{
"name": "Python 3",
"image": "mcr.microsoft.com/devcontainers/python:0-3.11",
"postCreateCommand": "pip3 install -r requirements.txt",
"runArgs": ["--gpus", "all"]
}
包含扩展文件的新文件夹结构可能如下所示:
.
├── .devcontainer
│ ├── devcontainer.json
│ └── devcontainer.extend.json
├── .git
│ ├── FETCH_HEAD
...
├── app.py
├── requirements.txt
...
问题
是否有我不知道的已经可用的东西?实现其他配置甚至是一个好策略吗?
答:
整体
经过(另一次)搜索以及评论中的提示,我发现有很多人要求这样做。
例如:
到具体问题
实际上,我能够以另一种方式帮助自己。对此打开了一个功能请求,并得到了一个非常方便的答案,即某些客户端的 GPU 配置偏离问题(不是整体容器配置问题)。
可选 GPU 配置的诀窍是添加
"hostRequirements": {"gpu": "optional"}
到 devcontainer.json
评论