我正在尝试使用https URL而不只是http运行docker镜像。该应用程序已部署在tomcat中,并且已经生成了它的docker映像。当我在https URL上运行tomcat时,它工作正常,但是当我构建docker映像并尝试运行该映像时,该URL不起作用。
Dockerfile
FROM tomcat:9.0.35
COPY conf/my-release-key.keystore /usr/local/tomcat/conf/my-release-key.keystore
COPY conf/server.xml /usr/local/tomcat/conf/server.xml
ADD webapps/placeholder-webapp.war /usr/local/tomcat/webapps/
EXPOSE 8080 8445
CMD ["catalina.sh","run"]
server.xml
<Connector port="8445" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="conf/my-release-key.keystore" keystorePass="arcsight"
clientAuth="false" sslEnabledProtocols="TLSv1.2,TLSv1.3" sslProtocol="TLS">
</Connector>
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8445" />
我在运行docker映像时没有任何错误,但是在访问时什至看不到任何东西
答案 0 :(得分:0)
您需要使用EXPOSE 8445
在Dockerfile中公开端口8445,并使用-p 8445:8445
运行容器,以将本地端口8445映射到容器内部运行的端口8445。
您的日志没有显示tomcat知道它需要准备要在端口8445上运行的连接器。它必须使用默认的server.xml配置。您需要使用类似以下的方法将server.xml提供给容器。
COPY server.xml /usr/local/tomcat/conf/
答案 1 :(得分:0)
是否可以通过添加以下代码在server.xml
中启用SSL,然后将其复制到容器COPY server.xml /usr/local/tomcat/conf/
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" />
-->
除此EXPOSE 8443
之外,在Dockerfile
中而不是EXPOSE 8080
中,然后在https://localhost:8443
上使用您的服务
答案 2 :(得分:0)
您正在使用的端口8445和8009应该在Dockerfile中用EXPOSE
打开。