Возможно, мне чего-то не хватает:
Запрос попадает в контейнер apache httpd-> находит работника ajp -> находит рабочий хост в docker network-> пытается отправить запрос 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
worker.properties выглядит как
worker.app_worker.type=ajp13
worker.app_worker.host=app
worker.app_worker.port=8009
jk.conf имеет
JkMount /app|/* app_worker
, а соединитель доступен на сервере Tomcat. 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 работает.