Запуск Люси (tomcat) в докере с супервизором в качестве CMD, странный путь - PullRequest
0 голосов
/ 15 ноября 2018

Я создал Dockerfile для запуска моей службы Lucee (Coldfusion on Tomcat) с Apache. Это все работает нормально, однако у меня есть один дочерний сайт, где я запускаю index.cfm в веб-корне apache. Странно, я получаю сообщение об ошибке, что файл не может быть найден:

Page /supervisord-c/index.cfm [/var/www/project/tracker/root/supervisord-c/index.cfm] not found

Файл фактически сидит на /var/www/project/tracker/root/index.cfm].

Теперь это супервизор последней команды в моем докер-файле

...config stuff..
# Run config scripts
ADD scripts/setup.sh /root/setup.sh
RUN chmod +x /root/setup.sh
ENTRYPOINT ["/root/setup.sh"]

# Copy supervisord.conf
COPY scripts/supervisord.conf /etc/supervisor/conf.d/

# Expose HTTP and HTTPS ports
EXPOSE 80 443

# Engage
CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]

Супервизор запускает Apache и Tomcat Catelina.

Я избавился от supervisord, запустил CMD ["/usr/sbin/apachectl","-DFOREGROUND"] и вручную запустил Catelina. Веб-сайты, на которых работали, но дочерний сайт с index.cfm теперь отображал следующую ошибку:

Page /usr/sbin/index.cfm [/var/www/project/tracker/root/usr/sbin/index.cfm] not found

Таким образом, в последнем CMD, которое я выполняю, определенно есть соединение и как оно влияет на мой рут tomcat.

Есть идеи, как с этим справиться?

1 Ответ

0 голосов
/ 18 ноября 2018

выяснил в чем проблема.Dockerfile Lucee добавляет прокси-пропуск в ваш apache.conf.Это выглядит следующим образом:

proxypass="\n\n<IfModule mod_proxy.c> \n
    ProxyPreserveHost On \n
    ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ http://127.0.0.1:8888/$1$2 \n
    ProxyPassMatch ^/(.+\.cfchart)(/.*)?$ http://127.0.0.1:8888/$1$2 \n
    ProxyPassMatch ^/(.+\.cfml)(/.*)?$ http://127.0.0.1:8888/$1$2 \n
    # optional mappings \n
    #ProxyPassMatch ^/flex2gateway/(.*)$ http://127.0.0.1:8888/flex2gateway/$1 \n
    #ProxyPassMatch ^/messagebroker/(.*)$ http://127.0.0.1:8888/messagebroker/$1 \n
    #ProxyPassMatch ^/flashservices/gateway(.*)$ http://127.0.0.1:8888/flashservices/gateway$1 \n
    #ProxyPassMatch ^/openamf/gateway/(.*)$ http://127.0.0.1:8888/openamf/gateway/$1 \n
    #ProxyPassMatch ^/rest/(.*)$ http://127.0.0.1:8888/rest/$1 \n
    ProxyPassReverse / http://127.0.0.1:8888/ \n
</IfModule> \n"

echo -e $proxypass >> /etc/apache2/apache2.conf

Что я никогда не замечал, что когда я смотрю в свой файл докеров-контейнеров apache2.conf файл, который я вижу,

ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ http://127.0.0.1:8888/supervisord-c

Таким образом, $ 1 добавляет мое supervisord-c отображение моего прокси-прохода.Не уверен, почему, но удаление это решило проблему.

...