You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Devcontainer无法访问Visual Studio Marketplace的解决求助

解决Devcontainer无法访问Visual Studio Marketplace的连接超时问题

问题场景

启动Devcontainer时,出现Visual Studio Marketplace连接超时错误,具体报错:

[570601 ms] [01:03:30] #24: https://main.vscode-cdn.net/extensions/marketplace.json - error GET connect ETIMEDOUT 13.107.246.71:443
[01:03:30] #23: https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery - error POST connect ETIMEDOUT 13.107.42.18:443
[575718 ms] [01:03:35] #25: https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery - error POST connect ETIMEDOUT 13.107.42.18:443
[01:03:35] #26: https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery - error POST connect ETIMEDOUT 13.107.42.18:443
[591077 ms] [01:03:50] #27: https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery - error POST connect ETIMEDOUT 13.107.42.18:443

涉及配置:

  • Devcontainer配置(指定了--network=host和需安装的扩展)
  • Docker Compose配置(自定义myapp_network网络)
  • VS Code本地配置(已设置代理http://org.proxy.com:8080

核心问题分析

  1. 网络配置冲突:Devcontainer指定了--network=host,但Docker Compose服务使用自定义myapp_network,导致容器网络环境混乱,无法正常访问外部网络。
  2. 代理未传递到容器:VS Code本地的代理配置未同步到容器内的VS Code实例,容器无法通过代理访问Marketplace。
  3. Compose配置拼写错误myapp_orchestrator服务的RABBITMQ_DEFApULT_PASS环境变量拼写错误,可能导致服务启动异常间接影响网络连通性。

具体修复步骤

1. 统一网络配置,解决冲突

移除Devcontainer配置中的--network=host参数,让容器使用Docker Compose定义的myapp_network网络:
修改.devcontainer/devcontainer.json

{
    "name": "[Dev] MyDevContainer",
    "dockerComposeFile": ["../docker-compose-dev.yml"],
    // 移除host网络配置
    // "runArgs": ["--network=host"],
    "service": "orchestrator",
    "workspaceFolder": "/workdir",
    "postCreateCommand": "sudo ./build.sh",
    
    "customizations": {
        "vscode": {
            "extensions": [
                "GitHub.vscode-pull-request-github",
                "databricks.databricks",
                "github.copilot",
                "github.copilot-chat",
                "mechatroner.rainbow-csv",
                "ms-python.vscode-pylance",
                "ms-python.pylint",
                "ms-python.python",
                "ms-python.debugpy",
                "mhutchie.git-graph",               
                "paiqo.databricks-vscode",
                "redhat.vscode-yaml"
            ]
        }
    }
}

2. 给容器传递代理环境变量

在Docker Compose的myapp_orchestrator服务中添加代理相关环境变量,同时修正拼写错误:
修改docker-compose-dev.ymlmyapp_orchestratorenvironment部分:

environment:
  - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
  - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS} # 修正拼写错误
  - RABBITMQ_PORT_1=${RABBITMQ_PORT_1}
  - RABBITMQ_PORT_2=${RABBITMQ_PORT_2}
  - RABBITMQ_HOST=${RABBITMQ_HOST}
  - BUILD_ENV="dev"
  # 添加代理环境变量
  - HTTP_PROXY=http://org.proxy.com:8080
  - HTTPS_PROXY=http://org.proxy.com:8080
  - NO_PROXY=localhost,127.0.0.1,myapp_network

3. 同步代理配置到容器内的VS Code

在Devcontainer配置中,将本地VS Code的代理设置同步到容器内实例:
修改.devcontainer/devcontainer.jsoncustomizations.vscode.settings

"customizations": {
    "vscode": {
        "extensions": [
            // 原有扩展列表不变
        ],
        "settings": {
            "http.proxy": "http://org.proxy.com:8080",
            "http.proxyStrictSSL": false,
            "https.proxy": "http://org.proxy.com:8080"
        }
    }
}

4. 验证网络连通性

启动容器后,进入容器终端执行以下命令测试网络:

curl -I https://marketplace.visualstudio.com

返回200状态码则说明网络连接正常。

额外注意事项

  • 确保代理服务器org.proxy.com:8080能正常访问Visual Studio Marketplace的域名(marketplace.visualstudio.commain.vscode-cdn.net)。
  • 若代理需要认证,环境变量格式为http://username:password@org.proxy.com:8080

内容的提问来源于stack exchange,提问作者newkid

火山引擎 最新活动