我似乎找不到明确的答案,我找到了/sf/answers/4820489271/但它不是很清楚,也可能已经过时,因为“dockerComposeFile”不再是有效的选项。
我有一个项目,其中包含一个现有的 docker-compose.yml 文件,该文件启动 MariaDB 数据库,我为 Node 添加了一个生成的 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.202.3/containers/javascript-node
{
"name": "Node.js",
"runArgs": ["--init"],
"build": {
"dockerfile": "Dockerfile",
// Update 'VARIANT' to pick a Node version: 16, 14, 12.
// Append -bullseye or -buster to pin to an OS version.
// Use -bullseye variants on local arm64/Apple Silicon.
"args": { "VARIANT": "12" }
},
// Set *default* container specific settings.json values on …Run Code Online (Sandbox Code Playgroud) docker docker-compose visual-studio-code vscode-remote vscode-devcontainer
我正在尝试创建一个 devcontainer.json ,它将创建一个 Python 虚拟环境并立即在终端中激活它。
我使用 postCreateCommand 创建环境,这似乎有效:
"postCreateCommand": "python3 -m venv .venv",
Run Code Online (Sandbox Code Playgroud)
但我还没弄清楚如何让终端始终激活它。我尝试添加此设置:
"settings": {
"python.terminal.activateEnvInCurrentTerminal": true
}
Run Code Online (Sandbox Code Playgroud)
以及 post* 命令:
"postAttachCommand": ". .venv/bin/activate",
"postStartCommand": ". .venv/bin/activate",
"postCreateCommand": ". .venv/bin/activate",
Run Code Online (Sandbox Code Playgroud)
他们似乎无法可靠地激活它。我认为postAttachCommand有时有效,但并非总是如此。
我的docker-compose.yml样子是这样的
version: "3.8"
services:
vscode:
volumes:
- ..:/workspace:cached
- $SSH_AUTH_SOCK:/ssh-agent
- /var/run/docker.sock:/var/run/docker.sock
environment:
- SSH_AUTH_SOCK=/ssh-agent
Run Code Online (Sandbox Code Playgroud)
问题是 vscode 不想提供任何类似的可能性,docker-compose run --env ...因此我只剩下
WARNING: The SSH_AUTH_SOCK variable is not set. Defaulting to a blank string.
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以让我在不使用.env文件或类似内容的情况下将主机中的变量公开到开发容器?
docker docker-compose visual-studio-code vscode-remote vscode-devcontainer
当我在 VisualStudio Code 中打开开发容器时,即使我使用 SSH 密钥从 GitHub 克隆文件,也不会检测到 Git。
Docker Desktop 工作正常,一切都工作正常,因为我可以执行构建、清理和测试。
我无法提交更改,因为没有 git 存储库。
我对此很陌生。如果有人可以帮忙的话。
我正在使用 node:alpine 基础映像,我使用一些我需要的附加工具对其进行了扩展。撰写和容器运行完全正常。
问题是:当我在该容器中运行任何节点或 npm 命令时。假设
npm install我收到此错误消息:
node:internal/modules/cjs/loader:1093
throw err;
^
Error: Cannot find module '/root/.vscode-server/data/User/workspaceStorage/57db504abae22291c6f0acc55d5d6d41/ms-vscode.js-debug/bootloader.js'
Require stack:
- internal/preload
at Module._resolveFilename (node:internal/modules/cjs/loader:1090:15)
at Module._load (node:internal/modules/cjs/loader:934:27)
at internalRequire (node:internal/modules/cjs/loader:168:19)
at Module._preloadModules (node:internal/modules/cjs/loader:1454:5)
at loadPreloadModules (node:internal/process/pre_execution:605:5)
at setupUserModules (node:internal/process/pre_execution:122:3)
at prepareExecution (node:internal/process/pre_execution:113:5)
at prepareMainThreadExecution (node:internal/process/pre_execution:40:3)
at node:internal/main/run_main_module:10:1 {
code: 'MODULE_NOT_FOUND',
requireStack: [ 'internal/preload' ]
}
Run Code Online (Sandbox Code Playgroud)
我的 devcontainer.json 如下所示:
node:internal/modules/cjs/loader:1093
throw err;
^
Error: Cannot find module '/root/.vscode-server/data/User/workspaceStorage/57db504abae22291c6f0acc55d5d6d41/ms-vscode.js-debug/bootloader.js'
Require stack:
- internal/preload
at Module._resolveFilename (node:internal/modules/cjs/loader:1090:15)
at Module._load (node:internal/modules/cjs/loader:934:27)
at …Run Code Online (Sandbox Code Playgroud) 我目前遇到这个问题:
Command failed: /bin/sh -c ./.devcontainer/postCreateCommand.sh
Run Code Online (Sandbox Code Playgroud)
哪一个是
"postCreateCommand": "./.devcontainer/postCreateCommand.sh",
Run Code Online (Sandbox Code Playgroud)
设置从devcontainer.json.
但是当我停用“postCreateCommand”并在创建容器后手动运行它时,该脚本会起作用。这让我觉得问题可能出在脚本的路径上。但事实也并非如此。因为只有一个 echo 命令的空脚本似乎可以工作。
脚本如下:
echo "Installing Developer Requirements"
apt-get update && apt-get install -y man git
pip3 install -r .devcontainer/dev_pip_requirements.txt
Run Code Online (Sandbox Code Playgroud)
有什么想法如何调试吗"PostCreateCommand"?输出没有什么帮助,我不想开始将这个项目简化为最小的工作示例。
我更改了 git 以在 Windows 上检查以 linux 文件结尾的所有内容。我三次检查 shell 脚本是否有 LF 结尾。所以这些也不应该成为问题。(他们以前是)。
docker docker-compose visual-studio-code vscode-devcontainer
我希望在开发容器中运行一个应用程序、数据库和 Redis 服务,这样我就能够在容器、应用程序和 Windows 上访问我的数据库和 Redis,这就是当前我想要的应用程序的工作方式和数据库:
.devcontainer.json:
{
"name": "Node.js, TypeScript, PostgreSQL & Redis",
"dockerComposeFile": "docker-compose.yml",
"service": "akira",
"workspaceFolder": "/workspace",
"settings": {
"typescript.tsdk": "node_modules/typescript/lib",
"sqltools.connections": [
{
"name": "Container database",
"driver": "PostgreSQL",
"previewLimit": 50,
"server": "database",
"port": 5432,
"database": "akira",
"username": "ailuropoda",
"password": "melanoleuca"
}
],
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": true
}
},
"extensions": [
"aaron-bond.better-comments",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"mtxr.sqltools",
"mtxr.sqltools-driver-pg",
"redhat.vscode-yaml"
],
"forwardPorts": [5432],
"postCreateCommand": "npm install",
"remoteUser": "node"
}
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml:
version: "3.8"
services:
akira:
build:
context: …Run Code Online (Sandbox Code Playgroud) 我们必须为我们的应用程序使用 micromamba,因为 conda 安装我们的软件包的速度非常慢。我们使用 devcontainer 来安装 micromamba 及其软件包。这适用于 VS Code 终端,但编辑器仍然找不到我的包。
我只看到一种使用 shell 脚本片段或 shell rc 文件激活 micromamba 环境的方法。适用于终端,但我没有找到为编辑器进程激活它的方法。我发现的最接近的设置特定于venvs。
目前,正在尝试从使用转变Docker为Podman构建图像时。我可以在 CLI 中很好地构建容器,但在尝试.devcontainers在VS-Code. 我收到以下错误:
[27274 ms] Start: Run in container: /bin/sh -c mkdir -p /temp/backup
[27517 ms] [21:15:20] Started initializing default profile extensions in extensions installation folder. file:///root/.vscode-server/extensions
[27583 ms] [21:15:20] ComputeTargetPlatform: linux-x64
[27610 ms] [21:15:20] Completed initializing default profile extensions in extensions installation folder. file:///root/.vscode-server/extensions
[27675 ms] [21:15:20] ComputeTargetPlatform: linux-x64
[27853 ms] Container server: Segmentation fault (core dumped)
[27862 ms] Start: Run in container: # Test for /root/.gitconfig and git
[27863 …Run Code Online (Sandbox Code Playgroud) visual-studio docker visual-studio-code podman vscode-devcontainer
使用 VSCode devcontainer 我想在我的devcontainer.json. 目前我的devcontainer.json样子是这样的:
{
"name": "NodeJS & TypeScript",
"build": {
"dockerfile": "Dockerfile",
"args": {
"VARIANT": "16-bullseye",
"NPM_PROXY": "http://proxy.domain.com:8080",
"HTTPS_PROXY": "http://proxy.domain.com:8080",
"HTTP_PROXY": "http://proxy.domain.com:8080"
}
},
"settings": {},
"extensions": [
// ...
],
"remoteUser": "node",
"runArgs": ["--env-file", ".devcontainer/.env"]
}
Run Code Online (Sandbox Code Playgroud)
和我的Dockerfile:
ARG VARIANT
FROM mcr.microsoft.com/vscode/devcontainers/typescript-node:0-${VARIANT}
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends chromium
WORKDIR /usr/app
ARG NPM_PROXY
RUN npm config set https-proxy ${NPM_PROXY} -g
RUN npm i -g @angular/cli
ENV …Run Code Online (Sandbox Code Playgroud)