如何避免使用 Visual Studio 和 docker 容器在 API 上出现连接被拒绝错误?

Posted

技术标签:

【中文标题】如何避免使用 Visual Studio 和 docker 容器在 API 上出现连接被拒绝错误?【英文标题】:How to avoid a connection refused error on an API with Visual Studio and a docker container? 【发布时间】:2020-07-10 14:37:07 【问题描述】:

自从收容以来,我使用 *** 在家工作,我无法为我的解决方案请求身份验证 API。

我正在开发一个带有两个 docker 容器的 .Net Core 应用程序,一个是应用程序,第二个是 DB2 数据库,我们有一个客户端给我们的身份验证 API,我们安装在我们的一台本地机器上。因此,一旦我通过 *** 进行连接,我猜现在一切都在同一个网络中(我不是网络专家)。

现在,开发分支正在集成服务器和我同事的 PC 上工作,他也在家里通过 *** 工作,所以我们在相同的条件下使用相同的代码。 但是在尝试进行身份验证时出现此错误:

唯一的区别应该来自我的环境,我确实有一些不同的东西: - 他的环境

还有我的:

如您所见,我已经配置了 http_proxy,但我不知道它来自哪里。它使 docker 容器无法访问 Internet,因此我使用 export http_proxy= 将其删除,然后能够使用 apt-get install iputils-ping 检索 ping 包。 使用此配置,我可以 ping 8.8.8.8,ping 安装 API 的本地计算机,甚至可以 curl http 身份验证 URL,但尝试在应用程序或 swagger 上启动身份验证时仍然无法连接。 我认为问题出在 Visual Studio 环境/配置、docker 容器和网络之间,但我不知道在哪里。

这是我的 docker-compose.yml :

version: '3.4'

services:
  db2server:
    env_file: .\DB2\env_file
    privileged: true
    build:
      context: .\DB2
    ports:
      - 50001:50001
      - 55001:55001
    volumes:
      - .\DB2\data:/database
      - .\DB2\scripts:/var/setup
      - .\DB2\sql:/var/sql
  openhostservice:
    build:
      context: .
      dockerfile: OpenHostService/Dockerfile
    image: $DOCKER_REGISTRY-openhostservice
    depends_on:
      - db2server
    ports:
      - 32780:80
networks:
    default:
        external:
            name: ******

我尝试了在全局 Windows 系统设置中使用和不使用代理配置,使用和不使用 http_proxy。

【问题讨论】:

【参考方案1】:

见commentaries in this SO post,可能系统认为空环境变量与未设置变量不一样,所以请使用unset http_proxy命令(其他环境变量也一样)。如果没有帮助,请提供具有更高分辨率图像的环境配置(现在文本可读性不够)。

【讨论】:

谢谢!我不知道 unset http_proxy 命令,但它帮助我找到了我的问题。它来自 .docker/config.json (一个我不知道的文件),其中设置了代理,似乎从终端中删除 http_proxy 仅针对此实例而不是真正在容器上。这让我感到困扰,我可以从终端卷曲但仍然无法访问 API URL。

以上是关于如何避免使用 Visual Studio 和 docker 容器在 API 上出现连接被拒绝错误?的主要内容,如果未能解决你的问题,请参考以下文章

带有 PyLint 和 autoPep8 的 Visual Studio 代码:如何避免 PyLint 抱怨我的行长?

如何在仍然使用 sysnative 虚拟文件夹的同时使用 Visual Studio 的 Exec 代码 -1 避免错误 MSB3073

如何避免 Visual Studio 在目标框架名称目录中输出程序集?

如何在 Visual Studio Mac for Unity 解决方案中避免 CS1591 警告?

Visual Studio单元测试和命令行参数,以避免源代码管理中的密码

避免 Visual Studio 项目的配置过多