vscode 在容器中重新打开后跳转到特定卷

vscode jumps to a specific volume afer reopen in container

我有一个带有 .devcontainer 配置的不错的项目。自从 vscode 更新到 1.63 后,我在 docker 设置方面遇到了一些问题。现在我使用的是最新的 1.64.0

我只想构建一个新的容器,并在一个全新的环境中启动一个干净的卷。

发生的事情是,一个新容器正在启动,我看到了另一个容器中的一些东西。 如果我将 git 存储库克隆到容器卷中,也是如此。

  1. 为什么有些容器连接到工作区的同一卷?
  2. 为什么我每次都回退到同一个音量?

在devcontainer.json我设置:

"workspaceFolder": "/workspace",
"workspaceMount": "source=remote-workspace,target=/workspace,type=volume",

要在全新环境中构建新的 devcontainer,您可以安装 devcotainer cli 并手动触发构建。

我习惯于将工作区挂载为绑定挂载(在 windows 上使用 wsl2 文件)而不是卷挂载,我认为主要问题是卷名:如果两个项目都有“source=remote-workspace" 音量将被检测为相同。

对于 nodejs,我想将 node_modules 文件夹保存在容器中,我在 official vscode guide for this usecase.

之后进行了双重安装

所以我将 workspaceMount 作为默认的绑定挂载,而不是添加一个覆盖特定文件夹的卷。

{
  "mounts": [
    //      vvvvvvvvvvv name must be unique
    "source=projectname-node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume"
  ]
}

结果是:

  • 每个文件/ 都是容器服务器
  • 但是 ${containerWorkspaceFolder} 里面的所有东西都由 bind mount
  • 服务
  • 但是 ${containerWorkspaceFolder}/node_modules 里面的所有东西都是命名卷的服务器