Probablemente hay algo fácil que me estoy perdiendo:
La solicitud llega al contenedor apache httpd-> encuentra el trabajador ajp -> encuentra el host del trabajador en la red docker-> intenta enviar la solicitud a tomcat-> falla diciendo que el contenedor tomcat no está escuchando en el puerto 8009
Docker-compose parece
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: - 8009trabajadores.propiedades parece
worker.app_worker.type=ajp13 worker.app_worker.host=app worker.app_worker.port=8009jk.conf tiene
JkMount /app|/* app_workery el conector está disponible en tomcat server.xml
<Connector protocol="AJP/1.3" address="::1" port="8009" redirectPort="8443" />error
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 portPuedo confirmar que Tomcat se está ejecutando.
El uso de redes de host debería solucionar esto:
tomcat: network_mode: 'host'Por alguna razón, AJP se negó a trabajar con las redes puente para mí. Y mi entorno es más simple: es un contenedor único con un Tomcat incorporado implementado en él. Probé la conectividad con un cliente AJP ( https://bz.apache.org/bugzilla/show_bug.cgi?id=47242 ) y reduje el problema al lado de Tomcat AJP.
Estaba teniendo problemas con esto también. Mi docker-compose tiene contenedores Apache y Tomcat en una red de puente compartida. En lugar de usar localhost, establecí la dirección del conector AJP en 0.0.0.0 en mi server.xml. Después de reiniciar el contenedor Tomcat, pude conectarme desde mi contenedor Apache en 8009.