在这个问题上建议应该.devcontainer.json
承诺。
我同意,但有一个问题。我需要将本地目录绑定挂载到我的 devcontainer 中。这需要我的同事没有的本地路径。目的是将我的 GCP 凭证挂载到我的 devcontainer 中,以便与 gcloud CLI 一起使用。
我的 .devcontainer.json 看起来像:
{
"image": "some/image",
// ... settings, extensions, forwardPorts, postCreateCommand, remoteUser, runArgs ...
// Mount gcloud configuration directory
"mounts": [
"source=/Users/myname/.config/gcloud,target=/gcp/config,type=bind,consistency=cached"
]
}
Run Code Online (Sandbox Code Playgroud)
这是可行的,但如果我提交这个,它会破坏其他人的设置。
如何创建到我本地定义的 vscode devcontainer 的绑定挂载,而不添加条目.devcontainer.json
?
解决方法
一种解决方法是将其转换为 docker-compose 设置,然后定义一个docker-compose.developer-overrides.yml
不提交但必需的文件。但这似乎是错误的解决方案,应该有一个我错过的设置覆盖。
另一个方法是挂载用户的主目录(vscode 用户指南展示了如何为 Windows 和 Linux 用户执行此操作:
"source=${localEnv:HOME}${localEnv:USERPROFILE},target=/host-home-folder,type=bind,consistency=cached"
...但是所有用户都必须将其 gcloud 配置安装在本地计算机的同一位置;我我不确定这是否可能。
我有一个~/projects/
目录,其中包含一堆克隆的 Git 存储库。我喜欢选择其中的子集并将它们另存为 VS Code多根工作区~/projects/*.code-workspace
。
我还使用了一个开发容器,进行了配置,~/projects/.devcontainer.json
以便所有工作区都能自动找到它。
当我构建开发容器时,我希望能够运行一些初始化逻辑,输入是打开的工作区中的文件夹列表。
我可以使用${containerWorkspaceFolder}
in .devcontainer.json
,但这给了我~/projects
,而不是确切的文件,并且目录中.code-workspace
有多个文件。.code-workspace
如果我可以获得当前 .code-workspace 文件的路径,我可以解析 json 并获取文件夹列表,但似乎我只能获取父文件夹。
我尝试terminal.integrated.env.linux
设置foo.code-workspace
每个工作空间的环境变量CODE_WORKSPACE_FILE=~/projects/foo.code-workspace
,但它对 devcontainer 构建不可见,仅在工作空间已在容器中打开后打开的集成终端中可见。
workspace.workspaceFolders()
我看到vscode扩展API中有一个方法。我不想编写一个扩展只是为了将该值暴露给 devcontainers 系统,但也许这是目前唯一的方法。
还有其他想法吗?
visual-studio-code vscode-remote vscode-devcontainer devcontainer
devcontainer ×2