部署在同一个docker容器中的两个war文件不可访问



我在docker容器中部署了两个war文件,例如app1。War和app2.war。app1。War正在内部调用app2。战争中获得的服务很少。我可以在app1中访问service。War来自浏览器和内部,当app1。War尝试调用app2中的service。我得到以下错误

我使用Apache服务器,每个请求将首先命中Apache服务器,然后定向到容器中运行的服务。Apache服务器在我的主机上作为服务运行。

我已经创建了Dockerfile以tomcat为基础,并复制app1。战争和应用。webapps文件夹中的War和暴露端口是8080

并将映像构建为

执行它Docker运行-it -p 9999:8080 myapp

http://localhost:9999/app1/service1 -----这是可访问的,这个URL在内部调用部署在app2中的服务http://localhost:9999/app2/calculation

在点击http://localhost:9999/app2/calculationURL我得到以下错误

Connection error for URL[http://localhost/app2/calculation/]. Exception: [I/O error on POST request for "http://localhost/app2/calculation/": Connect to localhost:80 [localhost/127.0.0.1] failed: Connection refused (Connection refused); nested exception is org.apache.http.conn.HttpHostConnectException: Connect to localhost:80 [localhost/127.0.0.1] failed: Connection refused (Connection refused)]. 

我正在寻找这个问题的解决方案,想知道问题到底在哪里。如有任何回应,我们将不胜感激。

部署在Tomcat上的app2在容器内的端口8080上公开,而不是9999。因此,当您试图从容器内的端口9999访问它时,会出现错误。如果您将app2的内部端点更改为8080,它应该可以工作。

现在,像这样在同一个Tomcat上部署两个war文件实际上是容器化世界中的反模式。通常的架构是有两个独立的映像/容器,每个映像/容器都有自己的war文件。

最新更新