我有一个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
我如何解决这个问题?
你不能执行请求到 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