标签: vscode-devcontainer

将存储库克隆到卷时,如何在 vscode Remote 中使用容器的自定义卷引导映像?

使用容器的 vscode 远程扩展将存储库克隆到卷中时,会下载 Alpine linuxdocker.io以引导该卷(最初)。这仅用于创建卷。然后用于我的应用程序的图像是我在 Dockerfile 中指定的正确图像(不是 alpine)。

如何设置自定义引导映像来引导卷?这样做的主要原因是安全方面:只应使用内部图像。

编辑:似乎bootstrap.Dockerfile可以在扩展的文件夹(<user-folder>/.vscode/extensions/ms-vscode-remote.remote-containers-<version>/scripts/volumeBootstrap.Dockerfile)中手动更改,但这不是一个合适的解决方案。如何在例如devcontainer.json或其他地方指定该文件路径?

visual-studio-code docker-volume vscode-devcontainer

5
推荐指数
0
解决办法
975
查看次数

Github Codespaces - 无法从存储库检测到平台/语言

我正在尝试使用 Github Codespaces打开此存储库。请注意,此存储库已针对本地devcontainer开发正确配置

但是,当我尝试在 CodeSpaces 中打开它时,它似乎正确构建了容器,但失败了:(Could not detect any language/platform in the source directory完整日志此处

我缺少什么?

codespaces vscode-devcontainer

5
推荐指数
1
解决办法
892
查看次数

VS Code 开发容器和企业代理

我正在尝试在公司代理后面(在 VPN 上)运行 VS Code .NET 5.0 开发容器。遗憾的是,每次启动容器时,我都无法下载/安装 OmniSharp 扩展。

这是我得到的:

Installing C# dependencies...
Platform: linux, x86_64, name=ubuntu, version=20.04

Downloading package 'OmniSharp for Linux (x64)'     Retrying from 'https://roslynomnisharp.blob.core.windows.net/releases/1.37.10/omnisharp-linux-x64-1.37.10.zip' Failed at stage: downloadPackage
Error: connect ECONNREFUSED 127.0.0.1:9000
Run Code Online (Sandbox Code Playgroud)

具体来说,我有一个在本地运行的 zscaler 副本localhost:9000。我可以直接(在 Chrome 中)下载 OmniSharp 包的链接,没有任何问题。我尝试将代理 URL 添加到开发容器 Dockerfile,但没有成功。

ENV HTTPS_PROXY="http://127.0.0.1:9000/localproxy.pac"
ENV HTTP_PROXY="http://127.0.0.1:9000/localproxy.pac"
Run Code Online (Sandbox Code Playgroud)

Docker 声称正在使用 WSL 子系统,并且从 Ubuntu 容器中我可以很好地访问外部世界,所以我不确定下一步要尝试什么。有任何想法吗?

proxy omnisharp visual-studio-code vscode-devcontainer

5
推荐指数
0
解决办法
984
查看次数

Live relod 无法在 Angular 的 vscode 开发容器中工作

我一直在使用 VScode 开发容器以角度方式开发模拟应用程序。为此,我创建了一个 docker,并使用“添加开发容器配置文件”选项创建了 devcontainer.json。

除了 Angular 的实时重新加载功能之外,一切都运行良好。因此,我被迫停止服务并使用 ngserve 命令再次运行它。

以下是我使用过的示例 docker 文件

FROM node:alpine

RUN npm install -g @angular/cli

EXPOSE 80
Run Code Online (Sandbox Code Playgroud)

devcontainer.json

// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.194.3/containers/docker-existing-dockerfile
{
    "name": "Existing Dockerfile",

    // Sets the run context to one level up instead of the .devcontainer folder.
    "context": "..",

    // Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename.
    "dockerFile": "../Dockerfile",

    // Set *default* container specific settings.json values …
Run Code Online (Sandbox Code Playgroud)

livereload visual-studio-code angular vscode-devcontainer

5
推荐指数
1
解决办法
504
查看次数

VS Code:在开发容器构建期间使用多根工作区文件夹列表

我有一个~/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

5
推荐指数
1
解决办法
3397
查看次数

Devcontainers:如何访问已安装子目录中父目录的git存储库

我有以下文件夹结构:

- .git
- services
  - service-a
    - .devcontainer
    - src
  - service-b
    - .devcontainer
    - src
  - service-c
    - .devcontainer
    - src
  - many more services...
Run Code Online (Sandbox Code Playgroud)

我在根文件夹中定义了 git 存储库。我为每个服务使用 VS-Code devcontainer,在其中安装子文件夹 ( service-a/service-b/service-c/)。在容器内部,我想使用git命令,即pull、add、commit、push等等。

这是不可能的,因为一旦我将子文件夹挂载到容器中,它就不知道根目录中有一个 .git 文件夹,因为该文件夹没有挂载进去。只有子文件夹挂载在.VS-Code 然后认为它不是 git 存储库。

我知道这个问题有几种解决方案/解决方法:

  1. 一种解决方案显然是将整个根文件夹挂载到容器中,但我的项目非常大。我在这个存储库中有几十个服务。仅安装相应服务的文件夹可以让我更好地了解其源代码。另外,我有多个具有相似或相同模块名称的 Python 项目。因此,在容器中使用自动完成功能时,还会发现其他服务的Python模块,这不是我想要的。

  2. 另一个解决方案是整理每个服务并将其放入其自己的 git 存储库中。这是我喜欢的解决方案,但遗憾的是,我没有时间这样做。

  3. 另一种解决方法是使用在主机上而不是在容器中运行的本地控制台。这让我可以访问 git。但是,VS-Code 将失去 git 的所有功能,因为 VS-Code 不知道安装的文件夹实际上是 git 存储库。

这个问题还有其他解决方案吗?

git containers docker visual-studio-code vscode-devcontainer

5
推荐指数
0
解决办法
616
查看次数

如何在 VS Code 的所有开发容器中打开 Copilot?

我希望每次在 VS Code 中开发时都使用 Github Copilot 扩展,即使我在开发容器中打开了一个项目。现在,每次开发容器打开时,我都必须在每个项目中手动安装 Copilot。

我知道我可以在 devcontainer.json“扩展”列表中指定“Github.copilot”,但这些不是我的项目,所以我想要一个解决方案,可以为我打开它,但不会将其强加给其他人。

vscode-extensions vscode-remote vscode-devcontainer github-copilot

5
推荐指数
1
解决办法
2817
查看次数

使用 docker dev 容器时的 npm 链接开发包

用于npm link在 docker dev 容器中同时编写多个包

PkgA 是 PkgB 的依赖项,我正在对两者进行更改。目标是能够在 PkgB 中链接 PkgA,而无需发布每个小更新并重新安装。npm|yarn link 解决了这个问题,但我正在 docker 容器中开发。

https://github.com/npm/npm/issues/14325

docker npm-link vscode-devcontainer

3
推荐指数
1
解决办法
3231
查看次数

如何从 devcontainer 转发 UDP 端口?

我正在尝试使用 Microsoft 的“Node.js & Mongo DB”devcontainer ( https://github.com/microsoft/vscode-dev-containers/tree/main/containers/javascript-node-mongo/.devcontainer )我的 udp 服务器是用 Nodejs 制作的。

问题如下:当我尝试在 devcontainer.json 示例中转发端口时:"forwardPorts": [1117]

当我实际上想转发 1117/udp 时,它似乎只转发 1117/tcp。

我正在尝试为该项目完成这项工作:https://github.com/QuentinGruber/h1z1-server/blob/master/.devcontainer/devcontainer.json

docker dockerfile docker-compose visual-studio-code vscode-devcontainer

3
推荐指数
1
解决办法
7025
查看次数

如何将 git ssh 凭据从 wsl 传递到 VScode dev-container

我已经使用 WSL 中的 ssh 密钥为我的 gitlab 帐户设置了 ssh 密钥。

现在我想在 VScode 开发容器中使用相同的 ssh git 凭据。

如何将 ssh 密钥传递到开发容器?

git ssh wsl-2 vscode-devcontainer

3
推荐指数
1
解决办法
2604
查看次数