我已经创建了一个Dockerfile来与Apache一起运行我的Lucee(Tomcat上的Coldfusion)服务。 一切正常,但是,我有一个子站点,我在apache Webroot中运行index.cfm。 奇怪的是,我收到一条错误消息,指出找不到该文件:
Page /supervisord-c/index.cfm [/var/www/project/tracker/root/supervisord-c/index.cfm] not found
文件实际上位于/var/www/project/tracker/root/index.cfm]
。
现在由我的dockerfile中的最后一条命令监视了
...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。
我摆脱了主管的管理,运行了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 Webroot。
有什么办法解决这个问题吗?
答案 0 :(得分:0)
找出问题所在。 Lucee dockerfile将代理通行证添加到您的apache.conf中。 看起来像:
$user_meta = get_userdata($user_id);
$user_roles = $user_meta->roles;
if ( in_array( 'administrator', $user_roles, true ) ) {
//echo User is a administrator';
}
我从未注意到的是,当我查看我的docker容器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
因此,$ 1将我的ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ http://127.0.0.1:8888/supervisord-c
映射添加到我的代理通行证中。不知道为什么,但是删除它可以解决问题。