我正在尝试将Docker容器中的Tomcat配置为侦听127.0.0.1:80,而不是0.0.0.0:80。catalina日志显示Tomcat服务器正在启动,但似乎无法访问Tomcat。catalina日志和netstat都确认Tomcat正在侦听127.0.0.1:80。
Wireshark显示TCP握手正在完成。但是,浏览器发送的HTTP get请求不会得到响应。
这是Dockerfile:
FROM debian:stretch
RUN \
apt-get update && \
apt-get upgrade -y && \
apt-get install -y default-jre && \
apt-get install -y libtcnative-1 && \
apt-get install -y wget && \
apt-get install -y curl && \
apt-get install -y unzip && \
apt-get install -y gettext-base
ENV JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/jre"
RUN \
TOMCAT_VER=`curl --silent http://mirror.vorboss.net/apache/tomcat/tomcat-9/ | grep v9 -m 1 | awk '{split($5,c,">v") ; split(c[2],d,"/") ; print d[1]}'` && \
wget -N http://mirror.vorboss.net/apache/tomcat/tomcat-9/v${TOMCAT_VER}/bin/apache-tomcat-${TOMCAT_VER}.tar.gz &&\
tar xzf apache-tomcat-${TOMCAT_VER}.tar.gz && \
rm -f apache-tomcat-${TOMCAT_VER}.tar.gz && \
mv apache-tomcat-${TOMCAT_VER}/ /opt/tomcat
ENV CATALINA_HOME="/opt/tomcat" \
PATH="$PATH:/opt/tomcat/bin"
RUN rm -fr /opt/tomcat/webapps/*
COPY app.war /opt/tomcat/webapps/ROOT.war
COPY server.xml /opt/tomcat/conf/server.xml
CMD ["catalina.sh", "run"]
EXPOSE 80 443下面是来自server.xml的相关连接器:
<Connector port="80"
protocol="HTTP/1.1"
address="127.0.0.1"
connectionTimeout="20000" />对此有更深入了解的人可以解释一下,为什么当Tomcat被配置为侦听127.0.0.1时,无法连接到Tomcat容器?
发布于 2021-09-28 19:57:42
在网络方面,您的停靠应用程序(Tomcat)运行在与客户端不同的主机上(除非您在同一个容器中运行客户端,这是不太可能的)。如果您的Tomcat只侦听127.0.0.1:80,那么任何客户端都不能从容器外部进行连接。
即使您将Tomcat修改为侦听0.0.0.0:80,tomcat也会在容器内正确侦听,但Docker的默认设置仍然不允许任何流量。你必须通过expose that port连接到外部世界。
https://stackoverflow.com/questions/68931049
复制相似问题