Docker镜像未与https和tomcat一起运行

时间:2020-06-09 21:37:24

标签: docker https dockerfile tomcat9

我正在尝试使用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映像的输出: enter image description here

我在运行docker映像时没有任何错误,但是在访问时什至看不到任何东西

  • https:// localhost:8445 URL。 我收到 在浏览器上无法访问该网站的错误

3 个答案:

答案 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打开。