重载或扩展Dev Container配置文件(`devcontainer.json`)

2izufjch  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(234)

我正在寻找一种可能性来扩展或重载已添加到存储库/版本控制的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
...

问题

是否有一些已经可用的东西,我不知道?它甚至是一个很好的战略,以实现额外的配置?

yrwegjxp

yrwegjxp1#

整体

经过(另一个)搜索,并在评论中的提示,我发现有相当多的人要求这一点。
举例来说:

  • Overlay .devcontainer#3279
    • 添加“extends”顶级属性,以实现简单的配置继承 * #22

针对具体问题

实际上,我可以用另一种方式来帮助自己,打开一个feature request on this,得到了一个非常方便的答案,这个答案是关于一些客户端的GPU配置偏离的问题(而不是整个容器配置问题)。
可选GPU配置的技巧是添加

"hostRequirements": {"gpu": "optional"}

字符串
到devcontainer.json

相关问题