【问题标题】:POST to others API from docker container with FAST API使用 FAST API 从 docker 容器 POST 到其他 API
【发布时间】:2022-10-14 11:08:20
【问题描述】:

我在 docker 容器中有一个 FAST API 主机。此 API 的工作流程会将数据发布到“托管在不同服务器上”的其他 API。现在 FAST API 可以被另一个程序调用。但是当它调用其他API时会出现“没有与主机名关联的地址”错误,我认为dockerfile中可能有问题。下面是图表和dockerfile。

Dockerfile

FROM python:3.9

WORKDIR /code

COPY ./requirements.txt /code/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

COPY ./app /code/app

WORKDIR /code/app

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

【问题讨论】:

  • docker 容器是否在同一个虚拟网络上?当您尝试发布到 api1/api2 时,您使用哪些主机?此主机是否与正在运行的容器的名称相同?
  • 你的 Dockerfile 看起来不错
  • @MatsLindh API1 和 API2 与我的 docker 不是同一台机器。
  • 该错误表明您尝试连接的主机名无法解析其 DNS,您可以分享您正在使用的主机名吗?如果它们是内部或其他非全局 DNS 名称,您必须执行一些额外的步骤。
  • @krs 主机名在我们公司网络内。但我想我应该尝试添加 DNS 配置。

标签: docker fastapi


【解决方案1】:

因为我正在使用安装在 Windows 操作系统上的 Docker Desktop 运行我的 docker。我注意到 Windows 没有/etc/resolv.conf文件。所以也许它不会自动继承主机的 DNS 设置。而且我们公司的Windows和Linux的DNS服务器ip是不同的。

所以我用两种方式解决了这个问题。

  • 在 Linux 机器上托管 Docker,无需设置任何 dns ip。

  • 更改dns服务器ip。

【讨论】:

    猜你喜欢
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 2017-11-14
    • 2022-01-24
    • 2017-01-26
    相关资源
    最近更新 更多