如何从docker容器向本地机器发送http请求?[重复]

问题描述 投票:0回答:1

我有一个Web应用程序是运行在docker容器和一个必须发送请求到我的本地机器(localhost),当我试图做到这一点,我得到以下异常。

java.util.concurrent.ExecutionException: java.net.ConnectException: Connection refused: localhost/127.0.0.1:9033

我试图给你一些更多的细节。我看了一下这个 职位 但对我来说,它不工作。 首先,我想解释一下我的项目结构:1.我有一个项目,由两部分组成:前台(angular 9)和后台(play 2.8.x框架)2.我还有一个项目(web-service)。我还有一个项目(web服务

我的第一个项目(后端、前端)放在docker容器中,第二个项目(web服务)放在本地主机上。我在这些项目之间有以下流程。1. 用户向后端发送一个请求(从web浏览器),例如,可能是登录请求。2. 后台处理这个请求(从数据库中检索数据),并将这些数据发送到放置在本地主机上的web服务。我得到的异常是写在上面。 我试图设置 --network=host 但在这种情况下,我得到的是 404 status code 我如何解决这个问题?

java docker playframework netty
1个回答
1
投票

你不能执行请求到 localhost 容器内,因为从容器的角度来看 localhost 不是主机(docker运行的地方),而是容器本身。

如果 9033 是你的服务器在你的机器上监听的端口,你可以在运行容器时通过

docker run --expose 9033 containerName

然后,如果没有对容器应用自定义网络配置,则默认网关(使用 ip route show | grep 'default' | awk '{print $3}')对应于你应该连接的IP。

我试着用一个简单的Python HTTP服务器,在端口 9000 在我的主机里。

从主机内。python3 -m http.server 9000

从容器中:

export IP=$(ip route show | grep 'default' | awk '{print $3}')
curl -k -I -X GET "${IP}:9000"

给予 HTTP/1.0 200 OK

© www.soinside.com 2019 - 2024. All rights reserved.