我可能遗漏了一些简单的东西:
请求命中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:
- 8009workers.properties看起来像
worker.app_worker.type=ajp13
worker.app_worker.host=app
worker.app_worker.port=8009jk.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正在运行。
发布于 2021-02-01 04:34:20
使用主机网络应该可以解决这个问题:
tomcat:
network_mode: 'host'不管是什么原因,AJP拒绝为我使用网桥网络。而且我的环境更简单:它是一个单独的容器,其中部署了一个嵌入式Tomcat。我测试了一个AJP客户端(https://bz.apache.org/bugzilla/show_bug.cgi?id=47242)的连通性,并将问题范围缩小到Tomcat AJP端。
发布于 2021-04-22 20:00:20
我对此也有问题。我的docker-compose在一个共享的网桥网络上有Apache和Tomcat容器。我在server.xml中将AJP连接器地址设置为0.0.0.0,而不是使用本地主机。重新启动Tomcat容器后,我可以从8009上的Apache容器连接到它。
https://stackoverflow.com/questions/60569638
复制相似问题