首页  >  问答  >  正文

跨Docker容器的API调用

<p>我正在尝试从一个docker容器(假设是<code>container_A</code>)中使用提供的API,来访问另一个容器(<code>container_B</code>)。这两个容器在同一个Docker网络中。在添加Docker之前,我当然会对<code>http://localhost:{app_port}/{endpoint}</code>进行API调用,现在我已经将应用程序Docker化,每个服务都在一个Docker容器中运行,我通过阅读其他问题和网站得知,如果它们在同一个网络中,你必须使用容器的别名,或者如果使用了<code>docker compose</code>,则使用服务名称,例如<code>http://container_A:8000/books</code>。我已经这样做了,但是不起作用。我在所有服务中配置了CORS,并且还尝试从<em>REST客户端</em>(这是一个类似Postman的VSCode扩展)中访问端点,以查看是否起作用,它确实起作用。我也做了端口映射/端口暴露。</p> <p>只是为了提供更多的背景信息,我想从一个包含Node.js应用程序的Docker容器中使用API,来访问另一个包含React应用程序的容器。</p> <p>有任何关于为什么这不起作用的想法吗?</p>
P粉764003519P粉764003519417 天前451

全部回复(1)我来回复

  • P粉956441054

    P粉9564410542023-08-30 13:02:20

    感谢 @DavidMaze 的评论,我开始尝试使用 localhost 而不是 React 应用程序容器的名称,因为显然 React 在浏览器中运行。在我的情况下,每个容器的 URL 看起来像这样:http://containerName:port,当它们之间进行请求时,我会使用该 URL(因为所有这些容器都在同一个 Docker 网络中),但是每当我想从 React 容器发出请求时,我会使用 http//localhost:port

    • containerName 是您应用程序的容器名称。例如:http://webapp:3000
    • port 是暴露的端口。例如:3000

    如有需要,请随意编辑以添加更多有用的信息。

    回复
    0
  • 取消回复