我有一个Web应用程序(。war)并希望将其部署在Tomcat服务器上。此外,REST API通信应该通过SSL进行,并移交带有所有这些更改的docker镜像。
mkshixfv1#
这个过程被分成几个小步骤。以下是使用Tomcat和SSL在docker上部署Web应用的步骤:1.使用OpenSSL生成密钥和crt文件并以PKCS 12格式导出1.更新服务器。使用SSL配置的xml1.创建Dockerfile1.构建镜像并在docker容器中运行1.导出docker镜像文件在我们开始之前,从将要部署的web应用程序(而不是spring Boot 应用程序)中准备好war文件。如果这是一个maven项目,这个命令可以帮助-mvn清洁包
开始吧:
***OpenSSL
下载OpenSSL,或者如果您的系统上安装了Git,找到这个路径并双击C:\Program Files\Git\usr\bin\openssl.exe将打开OpenSSL命令提示符。有多种方法来创建密钥和证书,如keytool,openssl。选择越多,困惑越多。我建议不要尝试多种解决方案,因为在服务器上部署时可能会遇到错误。下面是我们可以通过OpenSSL执行的几个命令,以及可以用作密钥库文件的结果文件。
req -newkey rsa:4096 -x509 -sha256 -out <path-to-save>\server.crt -keyout <path-to-save>\server.key -days 365
在控制台上提供此密钥的密码短语并提供其他详细信息。
pkcs12 -export -out <path-to-save>\server.p12 -inkey server.key -in server.crt
在您的机器上安装Tomcat。服务器。xml文件可位于\conf\server。XML在标签内添加以下代码段:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" keystoreType="PKCS12" keystoreFile="<server.p12-file-location>" keystorePass="<passphrase-provided-while-generating-key>" />
到目前为止,我们已经创建了keystore文件并使用SSL配置配置了tomcat。
应该能够通过HTTPS协议的浏览器接收GET API的响应。由于这是一个自签名的证书,而不是由授权的第三方提供的,因此请在浏览器上手动进行以命中url。
要在docker上运行启用SSL的tomcat应用,需要Dockerfile。示例Dockerfile,包含所有必需的步骤:
FROM tomcat:9.0.5-jre8 EXPOSE 8080 EXPOSE 8443 #copy p12 file location to docker tomcat path COPY ./ssl /usr/local/tomcat/ssl #Copy updated server.xml to docker COPY ./server.xml /usr/local/tomcat/conf/server.xml #Copy war file to docker tomcat \webapps folder COPY ./target/WebAppHTTPS.war /usr/local/tomcat/webapps/WebAppHTTPS.war
相应地更新您的路径,或者可以遵循此文件结构以使其易于访问。
| |---ssl | | | |---server.p12 | |---target | | | |---WebAppHTTPS.war | |---Dockerfile | |---server.xml
执行以下命令,将应用部署到Docker容器上:
docker build -t <any-name-like-sslwebapp> <location-to-Dockerfile>
这将在执行Dockerfile中提供的所有命令时构建一个docker镜像。
docker run -p 8443:8443 <name-provided-earlier-like-sslwebapp>
此命令显示控制台上的所有日志。如果没有错误,请按Ctrl+C并点击下面的命令以分离模式运行。
docker run -d -p 8443:8443 <name-provided-earlier-like-sslwebapp>
从浏览器中使用https命中GET API URL。这就是SSL配置的方式。
这是为了向您的同事或任何不使用任何repo的人提供Docker镜像。执行以下命令以导出图像。tar格式
docker save -o \<path>\docker-image.tar sslwebapp
这里,sslwebapp是我们前面提供的image标记的名称。共享此文件,接收者可以使用下面的命令来使用此图像
docker load -i \<tar-file-path>
1条答案
按热度按时间mkshixfv1#
这个过程被分成几个小步骤。以下是使用Tomcat和SSL在docker上部署Web应用的步骤:
1.使用OpenSSL生成密钥和crt文件并以PKCS 12格式导出
1.更新服务器。使用SSL配置的xml
1.创建Dockerfile
1.构建镜像并在docker容器中运行
1.导出docker镜像文件
在我们开始之前,从将要部署的web应用程序(而不是spring Boot 应用程序)中准备好war文件。
如果这是一个maven项目,这个命令可以帮助-
mvn清洁包
开始吧:
OpenSSL生成SSL密钥,导出为PKCS 12格式
***OpenSSL
下载OpenSSL,或者如果您的系统上安装了Git,找到这个路径并双击
C:\Program Files\Git\usr\bin\openssl.exe
将打开OpenSSL命令提示符。
有多种方法来创建密钥和证书,如keytool,openssl。选择越多,困惑越多。我建议不要尝试多种解决方案,因为在服务器上部署时可能会遇到错误。
下面是我们可以通过OpenSSL执行的几个命令,以及可以用作密钥库文件的结果文件。
在控制台上提供此密钥的密码短语并提供其他详细信息。
更新Tomcat服务器的SSL配置更改。XML
在您的机器上安装Tomcat。服务器。xml文件可位于
\conf\server。XML
在标签内添加以下代码段:
到目前为止,我们已经创建了keystore文件并使用SSL配置配置了tomcat。
应该能够通过HTTPS协议的浏览器接收GET API的响应。由于这是一个自签名的证书,而不是由授权的第三方提供的,因此请在浏览器上手动进行以命中url。
生成Dockerfile
要在docker上运行启用SSL的tomcat应用,需要Dockerfile。
示例Dockerfile,包含所有必需的步骤:
相应地更新您的路径,或者可以遵循此文件结构以使其易于访问。
构建Docker镜像并在容器中运行
执行以下命令,将应用部署到Docker容器上:
这将在执行Dockerfile中提供的所有命令时构建一个docker镜像。
此命令显示控制台上的所有日志。如果没有错误,请按Ctrl+C并点击下面的命令以分离模式运行。
从浏览器中使用https命中GET API URL。这就是SSL配置的方式。
导出Docker镜像
这是为了向您的同事或任何不使用任何repo的人提供Docker镜像。
执行以下命令以导出图像。tar格式
这里,sslwebapp是我们前面提供的image标记的名称。
共享此文件,接收者可以使用下面的命令来使用此图像