当使用容器的 vscode 远程扩展将存储库克隆到卷中时,会下载 Alpine linuxdocker.io以引导该卷(最初)。这仅用于创建卷。然后用于我的应用程序的图像是我在 Dockerfile 中指定的正确图像(不是 alpine)。
如何设置自定义引导映像来引导卷?这样做的主要原因是安全方面:只应使用内部图像。
编辑:似乎bootstrap.Dockerfile可以在扩展的文件夹(<user-folder>/.vscode/extensions/ms-vscode-remote.remote-containers-<version>/scripts/volumeBootstrap.Dockerfile)中手动更改,但这不是一个合适的解决方案。如何在例如devcontainer.json或其他地方指定该文件路径?
我正在尝试使用 Github Codespaces打开此存储库。请注意,此存储库已针对本地devcontainer开发正确配置。
但是,当我尝试在 CodeSpaces 中打开它时,它似乎正确构建了容器,但失败了:(Could not detect any language/platform in the source directory完整日志此处)
我缺少什么?
我正在尝试在公司代理后面(在 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 容器中我可以很好地访问外部世界,所以我不确定下一步要尝试什么。有任何想法吗?
我一直在使用 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) 我有一个~/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
我有以下文件夹结构:
- .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 存储库。
我知道这个问题有几种解决方案/解决方法:
一种解决方案显然是将整个根文件夹挂载到容器中,但我的项目非常大。我在这个存储库中有几十个服务。仅安装相应服务的文件夹可以让我更好地了解其源代码。另外,我有多个具有相似或相同模块名称的 Python 项目。因此,在容器中使用自动完成功能时,还会发现其他服务的Python模块,这不是我想要的。
另一个解决方案是整理每个服务并将其放入其自己的 git 存储库中。这是我喜欢的解决方案,但遗憾的是,我没有时间这样做。
另一种解决方法是使用在主机上而不是在容器中运行的本地控制台。这让我可以访问 git。但是,VS-Code 将失去 git 的所有功能,因为 VS-Code 不知道安装的文件夹实际上是 git 存储库。
这个问题还有其他解决方案吗?
git containers docker visual-studio-code vscode-devcontainer
我希望每次在 VS Code 中开发时都使用 Github Copilot 扩展,即使我在开发容器中打开了一个项目。现在,每次开发容器打开时,我都必须在每个项目中手动安装 Copilot。
我知道我可以在 devcontainer.json“扩展”列表中指定“Github.copilot”,但这些不是我的项目,所以我想要一个解决方案,可以为我打开它,但不会将其强加给其他人。
vscode-extensions vscode-remote vscode-devcontainer github-copilot
用于npm link在 docker dev 容器中同时编写多个包
PkgA 是 PkgB 的依赖项,我正在对两者进行更改。目标是能够在 PkgB 中链接 PkgA,而无需发布每个小更新并重新安装。npm|yarn link 解决了这个问题,但我正在 docker 容器中开发。
我正在尝试使用 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
我已经使用 WSL 中的 ssh 密钥为我的 gitlab 帐户设置了 ssh 密钥。
现在我想在 VScode 开发容器中使用相同的 ssh git 凭据。
如何将 ssh 密钥传递到开发容器?
docker ×3
git ×2
angular ×1
codespaces ×1
containers ×1
devcontainer ×1
dockerfile ×1
livereload ×1
npm-link ×1
omnisharp ×1
proxy ×1
ssh ×1
wsl-2 ×1