【发布时间】:2020-06-19 12:26:02
【问题描述】:
我可能缺少一些简单的东西:
请求命中 apache httpd 容器-> 找到 ajp worker -> 在 docker 网络上找到 worker 主机-> 尝试将请求发送到 tomcat-> 失败,说 tomcat 容器未在端口 8009 上侦听
Docker-compose 看起来像
version: '2'
services:
httpd:
build:
context: .
dockerfile: httpd/Dockerfile
container_name: "http-proxy"
volumes:
- ./httpd/conf/000-default.conf:/etc/apache2/sites-available/000-default.conf
- ./httpd/conf/workers.properties:/etc/apache2/workers.properties
- ./httpd/conf/jk.conf:/etc/apache2/mods-available/jk.conf
- ./httpd/conf/apache2.conf:/etc/apache2/apache2.conf
ports:
- 80:80
tomcat:
image: tomcat:8.5.51
volumes:
- ./tomcat/conf/server.xml:/usr/local/tomcat/conf/server.xml
container_name: "app"
expose:
- 8009
workers.properties 看起来像
worker.app_worker.type=ajp13
worker.app_worker.host=app
worker.app_worker.port=8009
jk.conf 有
JkMount /app|/* app_worker
并且连接器在 tomcat server.xml 中可用
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
错误
Failed opening socket to (192.168.164.4:8009) (errno=111)
[error] ajp_send_request::jk_ajp_common.c (1728):
(app_worker) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port
我可以确认 tomcat 正在运行。
【问题讨论】:
-
尝试将 --net=host 添加到 apache 和 tomcat,即使只是为了调试正确的端口被暴露和监听
-
您解决了这个问题吗?您能分享一下您的解决方案吗?
标签: apache docker tomcat8 mod-jk