2.5. 使用现有 Maven 二进制文件为 OpenShift 应用创建 JWS
您可以使用现有的 Maven 二进制文件为 OpenShift 应用创建 JWS。您可以使用 oc start-build 命令在 OpenShift 上部署现有应用程序。
此流程演示了如何创建基于 tomcat-websocket-chat quickstart 示例的示例应用程序。
先决条件
已有您要部署在 JWS for OpenShift 中的应用程序的
.war,.ear, 或.jar文件,或已在本地构建了应用程序。例如,要在本地构建
tomcat-websocket-chat应用程序,请执行以下步骤:要克隆源代码,请输入以下命令:
git clone https://github.com/web-servers/tomcat-websocket-chat-quickstart.git
$ git clone https://github.com/web-servers/tomcat-websocket-chat-quickstart.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置Red Hat JBoss Middleware Maven 存储库,参阅 配置 Red Hat JBoss Middleware Maven 存储库。
有关 Maven 存储库的更多信息,请参阅 Red Hat JBoss Ener Enterprise Maven Repository 网页。
要构建应用程序,请输入以下命令:
cd tomcat-websocket-chat-quickstart/tomcat-websocket-chat/ mvn clean package
$ cd tomcat-websocket-chat-quickstart/tomcat-websocket-chat/ $ mvn clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令会产生以下输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
在本地文件系统中,为二进制构建创建一个源目录和一个
deployments子目录。例如,要为
tomcat-websocket-chat应用程序创建/ocp源目录和/deployments子目录,请输入以下命令:cd tomcat-websocket-chat-quickstart/tomcat-websocket-chat/ mkdir -p ocp/deployments
$ cd tomcat-websocket-chat-quickstart/tomcat-websocket-chat/ $ mkdir -p ocp/deploymentsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意源目录可以包含未包含在 Maven 二进制文件中的应用程序所需的任何内容。如需更多信息,请参阅 JWS for OpenShift S2I 流程。
将
.war、.ear或.jar二进制文件复制到deployments子目录。例如,要复制 tomcat-websocket-chat 应用程序的
.war文件,请输入以下命令:cp target/websocket-chat.war ocp/deployments/
$ cp target/websocket-chat.war ocp/deployments/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在上例中,
target/websocket-chat.war是您要复制的二进制文件的路径。源目录的
deployments子目录中的应用存档复制到 OpenShift 上构建的镜像的$JWS_HOME/tomcat/webapps/目录中。要成功部署应用程序,您必须确保包含 Web 应用数据的目录层次结构是正确的。如需更多信息,请参阅 JWS for OpenShift S2I 流程。登录到 OpenShift 实例:
oc login <url>
$ oc login <url>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,创建一个新项目。
例如:
oc new-project jws-bin-demo
$ oc new-project jws-bin-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在前面的示例中,
jws-bin-demo是您要创建的项目名称。识别应用程序要使用的 JWS for OpenShift 镜像流:
oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '
$ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' 'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令会产生以下类型的输出:
jboss-webserver61-openjdk17-tomcat10-openshift-ubi8
jboss-webserver61-openjdk17-tomcat10-openshift-ubi8Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意-n openshift选项指定要使用的项目。oc get is -n openshift命令从openshift项目中获取镜像流资源。创建新构建配置,并确保您指定镜像流和应用程序名称。
例如,要为 tomcat-websocket-chat 应用程序创建新构建配置,请执行以下操作:
oc new-build --binary=true \ --image-stream=jboss-webserver61-openjdk17-tomcat10-openshift-ubi8:latest \ --name=jws-wsch-app
$ oc new-build --binary=true \ --image-stream=jboss-webserver61-openjdk17-tomcat10-openshift-ubi8:latest \ --name=jws-wsch-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在前面的示例中,
jws-wsch-app是 JWS for OpenShift 应用的 JWS 的名称。前面的命令会产生以下类型的输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动二进制构建。
例如:
oc start-build jws-wsch-app --from-dir=./ocp --follow
$ oc start-build jws-wsch-app --from-dir=./ocp --followCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在前面的示例中,
jws-wsch-app是 JWS for OpenShift 应用的名称,ocp是源目录的名称。前面的命令指示 OpenShift 使用您为 OpenShift 镜像构建的二进制输入创建的源目录。
前面的命令会产生以下类型的输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据镜像创建新 OpenShift 应用程序:
例如:
oc new-app jws-wsch-app
$ oc new-app jws-wsch-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在前面的示例中,
jws-wsch-app是 JWS for OpenShift 应用的 JWS 的名称。前面的命令会产生以下类型的输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 公开该服务以使应用程序可以被用户访问:
例如,要使
jws-wsch-app应用程序可以被访问,请执行以下步骤:检查要公开的服务名称:
oc get svc -o name
$ oc get svc -o nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令会产生以下类型的输出:
service/jws-wsch-app
service/jws-wsch-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 公开服务:
oc expose svc/jws-wsch-app
$ oc expose svc/jws-wsch-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令会产生以下类型的输出:
route "jws-wsch-app" exposed
route "jws-wsch-app" exposedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
检索公开路由的地址:
oc get routes --no-headers -o custom-columns='host:spec.host' jws-wsch-app
oc get routes --no-headers -o custom-columns='host:spec.host' jws-wsch-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开 Web 浏览器,再输入 URL 以访问应用。
例如,要访问示例
jws-wsch-app应用程序,请输入以下 URL:http://<address_of_exposed_route>/websocket-chat注意在前面的示例中,将
<address_of_exposed_route>替换为您的部署的适当值。