问题标签 [vscode-devcontainer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
31 浏览

visual-studio-code - Visual Studio Code - 在 devcontainer 之外运行任务

我想知道是否可以在当前 devcontainer 之外运行 vscode 任务,我问这个是因为我在一个节点 16 容器角度项目中使用cordova 工作,我的任务之一是使用 android studio 打开cordova 项目,像这样:

但是当我尝试将它作为 npm 脚本运行时,它告诉我 studio 不是一个已知命令,因为他在没有 android studio 的容器内运行该命令。

有人知道这是否可能吗?可能有一个已知的解决方法吗?

0 投票
3 回答
243 浏览

docker - 如何在 VSCode 远程开发容器中处理多个“network_mode”?

我想在开发容器中运行一个应用程序、数据库和 redis 服务,我可以在容器、应用程序和 Windows 上访问我的数据库和 redis,这就是我想要的应用程序的当前工作方式和数据库:

.devcontainer.json

docker-compose.yml

Dockerfile

如您所见,我已经尝试实现我想要使用的功能networks,但没有成功,我的问题是:如何将 Redis 添加到我的服务中,同时仍然能够在应用程序和 Windows 上连接 redis 和数据库?

0 投票
0 回答
131 浏览

visual-studio-code - 与运行 Docker 的 WSL2 后端的 VS Code Devcontainer 共享 SSH 密钥

我正在阅读有关与开发容器共享 SSH 密钥的这些文档,但我无法让它工作。

我的设置如下:

  • 带有 Docker Desktop 4.2.0 的 Windows 10 使用 WSL2 后端

  • 运行 Ubuntu 20.04 的 WSL2 发行版

  • 在 WSL2 中,我已经ssh-agent运行并知道我的密钥:

文档说

如果一个正在运行,扩展将自动转发您的本地 SSH 代理

但是如果我ssh-add -l在 devcontainer 中这样做,它会响应Could not open a connection to your authentication agent.; 当然,开始一个(带eval "$(ssh-agent -s)")只会开始一个不知道我的私钥的人。

我错过了什么?

0 投票
2 回答
263 浏览

docker - GitHub Codespaces:如何设置 x86_64、AMD64、ARM64 平台?

首先,问题是:有没有办法为 GitHub 代码空间选择平台(例如 x86_64、AMD64、ARM64)?

这是我到目前为止发现的:

尝试1(不工作):

在 GitHub.com 中,您可以为代码空间选择“机器”,但唯一的选项是 RAM 和磁盘大小。

尝试2(编辑:不工作): devcontainer.json

.devcontainer创建 Codespace 时,您可以通过创建包含两个文件的顶级文件夹来指定选项:devcontainer.jsonDockerfile

在这里您可以自定义运行时、已安装的包等,但文档没有说明有关确定架构的任何内容...

...但是,VSCode 文档devcontainer.json有一个runArgs选项,“接受 Docker CLI 参数”...

和 --platform 上的 Docker CLI 文档说你应该能够通过--platform linux/amd64or --platform linux/arm64,但是......

当我尝试这个时,代码空间会挂起,永远不会完成构建。

尝试 3(进行中):指定Dockerfile

这条路线似乎最有前途,但对我来说都是新的(容器化、代码空间、docker)。尝试 2 和 3 可能会相互配合。不过,在这一点上,有太多新的移动部件,我需要外部帮助。

  1. GitHub Codespaces 是否支持此功能?
  2. 你会在 Dockerfile 或 devcontainer.json 中传递它吗?如何?
  3. 无论如何,您将如何验证这一点?[已解决:dpkg --print-architectureuname -a]
  4. 对于 Windows,您可能需要许可证(我在 GitHub 上没有看到任何关于预许可代码空间的信息)——但这可能超出了问题的范围。

参考资料:
https://code.visualstudio.com/docs/remote/devcontainerjson-reference
https://docs.docker.com/engine/reference/commandline/run/
https://docs.docker.com/engine/reference /builder/
https://docs.docker.com/desktop/multi-arch/
https://docs.docker.com/buildx/working-with-buildx/

0 投票
0 回答
160 浏览

visual-studio-code - 在创建开发容器之前配置环境变量

我正在尝试将远程容器与我的docker-compose.yaml.

但是,我的撰写文件正在使用变量替换功能。

Makefile通常,我从包装docker-compose我运行的命令以启动我的开发环境的 a 中设置这些变量。

如何在扩展通过创建 Dev Container 之前设置这些环境变量docker-compose

我尝试通过initializeCommand以下方式使用。

devcontainer.json

我也尝试remoteEnvdevcontainer.json.

我也尝试设置settings.terminal.integrated.env.linux.

0 投票
0 回答
52 浏览

docker - 使用空 Docker 卷创建 devcontainer

目标:在 Docker 卷中创建一个开发容器。

问题容器卷中的克隆存储库... VS Code 中的操作需要一个现有的远程 git 存储库,而我没有。其余的操作似乎不利于在 Docker Volume 中创建干净的 Dev Container。

愿望:我正在寻找最简单的解决方案来完成类似于将开发容器配置文件复制到容器卷中的假设操作......这或多或少会在 Docker 卷中给出一个空的 devcontainer(没有启动 git repo) .

我尝试过的东西不太奏效。

  1. 容器卷中的克隆存储库...假设您有一个存储库,我还没有。我正在尝试在 Docker 卷的 devcontainer 中构建存储库。
  2. Open Folder in Container... bind 挂载文件夹,而不是使用卷。
  3. 尝试开发容器示例...在 Docker 卷中创建开发容器,但附带要清理的内容(文件、git 信息等)。我也不确定重命名卷会产生什么后果,并且担心我没有正确清理所有内容,所以我宁愿从“头”开始。
  4. 手动创建一个 Docker 卷,在 VS Code 中使用Explore in Development Container打开,然后Add Development Container Configuration Files ...。创建初始vsc-volume-inspect容器后,我似乎无法使用添加配置将其作为 devcontainer 重新打开。
  5. 我已经使用了Attach to Running Container...有点成功,但是 IIRC(我很早就尝试过这个,这是一个长期的学习经验)它缺少很多通常由 VS Code 完成的引导。

我在 Windows 11 上。运行 Docker Desktop 4.2.0 和 VS Code 1.63.0。

0 投票
1 回答
25 浏览

terminal - 如何将外部终端连接到 devcontainer?

我使用 iterm 并希望将其附加到活动的 devcontainer 工作区,而不是使用集成终端。

我可以从 iterm 手动执行到容器中,但这不会继承 VSCode 在集成终端中提供的所有设置和环境变量。

我在尝试使用 SSH 凭据时发现了这一点。从集成终端SSH_AUTH_SOCK正确使用,我可以使用 SSH 克隆存储库。但是,当我从 ITerm 手动执行到容器中时,我无法连接到 SSH 代理(如预期的那样,表明某些设置和环境变量没有被继承)。

是否可以附加,如果可以,如何附加?

这是我的意思的一个例子(顶部的集成终端,下面的 ITerm 终端)

在此处输入图像描述

0 投票
1 回答
140 浏览

visual-studio-code - Playwright 不会在 mac 上的 VSCode Dev Container 中运行

这个 repo中的简单 playwright 测试使用 npm 脚本在带有 vscode 的 mac 上运行test。如果我在 devcontainer(在 ./devcontainer 中)中打开相同的 repo,则测试失败,并出现有关缺少依赖项的错误:

我已将容器尝试为 14、16、14-bullseye 和 16-bullseye。虽然我现在在 Mac 上,但 CICD 将是真正的 linux。

  1. 如何让容器在我的 mac 上运行测试
  2. 无论是 mac 还是 linux,我如何让同一个容器工作
0 投票
0 回答
17 浏览

python - 与 devcontainer 共享 artifacts-keyring 身份验证和 pip.conf 以访问私有 Azure 提要

我们在工作中使用 Azure DevOps,并使用其中的 Artifacts 提要在内部共享 Python 包,这很可爱。

我一直在使用 WSL2 和artifacts-keyring对 DevOps 进行身份验证,并按照https://docs.microsoft.com/en-us/azure/devops/artifacts/quickstarts/python-clipip.conf中的说明指定提要 URL ?view=azure-devops#consume-python-packages效果很好。

为了开发 Python 并保持依赖关系隔离,同时仍然可以访问私有源和身份验证,我使用了Azure Devops Artifacts Helpersvirtualenv它也很有效。

现在我们越来越多地尝试使用devcontainers来为新开发人员提供更多的隔离和易于设置。

我已经广泛搜索了一种访问pip.confURL:s 和artifacts-keyring我的 devcontainer 内部身份验证的方法。有什么方法可以为我的容器提供这些?我已经尝试了所有可以在 Google 上找到的不同解决方案,但没有一个可以无缝运行并且没有 PAT:s。

我不想使用任何 PAT,因为我已经在 WSL2 中进行了身份验证。

我使用 WSL2 作为主机,即我正在克隆 WSL2 中的 repo,然后从那里启动 VScode 和 devcontainer。

是否有任何与我可以安装在容器内的密钥环相关的东西,以便它可以看到身份验证已经完成?

我可以在我的存储库中提供 pip.conf 的副本,我可以在构建时将其复制到容器中,但是每次重建容器时都必须进行身份验证,因此使用 PAT 也是如此。

亲切的问候卡尔

0 投票
0 回答
33 浏览

visual-studio-code - 打开 DevContainer 时 Vs Code 集成终端问题

打开开发容器时我遇到了一个奇怪的问题。容器运行良好,容器中的集成终端运行良好。然而,问题是这似乎破坏了我在不在开发容器内的项目中的集成终端。我检查了我的 vs 配置,没有任何改变,我似乎找不到问题的根源。我的扩展似乎也消失了(不在开发容器中)。

在退出一切(并停止 docker)之后,问题就消失了,但处理起来相当痛苦。

我正在运行 M1 硅芯片,也许这会带来一些问题?

任何帮助表示赞赏!