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
配置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
前面的命令会产生以下输出:
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Tomcat websocket example 1.2.0.Final [INFO] ------------------------------------------------------------------------ ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:28 min [INFO] Finished at: 2018-01-16T15:59:16+10:00 [INFO] Final Memory: 19M/271M [INFO] ------------------------------------------------------------------------
流程
在本地文件系统中,为二进制构建创建一个源目录和一个
deployments
子目录。例如,要为
tomcat-websocket-chat
应用程序创建/ocp
源目录和/deployments
子目录,请输入以下命令:$ cd tomcat-websocket-chat-quickstart/tomcat-websocket-chat/ $ mkdir -p ocp/deployments
注意源目录可以包含未包含在 Maven 二进制文件中的应用程序所需的任何内容。如需更多信息,请参阅 JWS for OpenShift S2I 流程。
将
.war
、.ear
或.jar
二进制文件复制到deployments
子目录。例如,要复制 tomcat-websocket-chat 应用程序的
.war
文件,请输入以下命令:$ cp target/websocket-chat.war ocp/deployments/
注意在上例中,
target/websocket-chat.war
是您要复制的二进制文件的路径。源目录的
deployments
子目录中的应用存档复制到 OpenShift 上构建的镜像的$JWS_HOME/tomcat/webapps/
目录中。要成功部署应用程序,您必须确保包含 Web 应用数据的目录层次结构是正确的。如需更多信息,请参阅 JWS for OpenShift S2I 流程。登录到 OpenShift 实例:
$ oc login <url>
如果需要,创建一个新项目。
例如:
$ oc new-project jws-bin-demo
注意在前面的示例中,
jws-bin-demo
是您要创建的项目名称。识别应用程序要使用的 JWS for OpenShift 镜像流:
$ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '
前面的命令会产生以下类型的输出:
jboss-webserver61-openjdk17-tomcat10-openshift-ubi8
注意-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
注意在前面的示例中,
jws-wsch-app
是 JWS for OpenShift 应用的 JWS 的名称。前面的命令会产生以下类型的输出:
--> Found image 8c3b85b (4 weeks old) in image stream "openshift/jboss-webserver61-tomcat10-openshift" under tag "latest" for "jboss-webserver61" JBoss Web Server 6.1 -------------------- Platform for building and running web applications on JBoss Web Server 6.1 - Tomcat v10 Tags: builder, java, tomcat10 * A source build using binary input will be created * The resulting image will be pushed to image stream "jws-wsch-app:latest" * A binary build was created, use 'start-build --from-dir' to trigger a new build --> Creating resources with label build=jws-wsch-app ... imagestream "jws-wsch-app" created buildconfig "jws-wsch-app" created --> Success
启动二进制构建。
例如:
$ oc start-build jws-wsch-app --from-dir=./ocp --follow
注意在前面的示例中,
jws-wsch-app
是 JWS for OpenShift 应用的名称,ocp
是源目录的名称。前面的命令指示 OpenShift 使用您为 OpenShift 镜像构建的二进制输入创建的源目录。
前面的命令会产生以下类型的输出:
Uploading directory "ocp" as binary input for the build ... build "jws-wsch-app-1" started Receiving source from STDIN as archive ... Copying all deployments war artifacts from /home/jboss/source/deployments directory into `/opt/jws-6.1/tomcat/webapps` for later deployment... '/home/jboss/source/deployments/websocket-chat.war' -> '/opt/jws-6.1/tomcat/webapps/websocket-chat.war' Pushing image 172.30.202.111:5000/jws-bin-demo/jws-wsch-app:latest ... Pushed 0/7 layers, 7% complete Pushed 1/7 layers, 14% complete Pushed 2/7 layers, 29% complete Pushed 3/7 layers, 49% complete Pushed 4/7 layers, 62% complete Pushed 5/7 layers, 92% complete Pushed 6/7 layers, 100% complete Pushed 7/7 layers, 100% complete Push successful
根据镜像创建新 OpenShift 应用程序:
例如:
$ oc new-app jws-wsch-app
注意在前面的示例中,
jws-wsch-app
是 JWS for OpenShift 应用的 JWS 的名称。前面的命令会产生以下类型的输出:
--> Found image e5f3a6b (About a minute old) in image stream "jws-bin-demo/jws-wsch-app" under tag "latest" for "jws-wsch-app" JBoss Web Server 6.1 -------------------- Platform for building and running web applications on JBoss Web Server 6.1 - Tomcat v10 Tags: builder, java, tomcat10 * This image will be deployed in deployment config "jws-wsch-app" * Ports 8080/tcp, 8443/tcp, 8778/tcp will be load balanced by service "jws-wsch-app" * Other containers can access this service through the hostname "jws-wsch-app" --> Creating resources ... deploymentconfig "jws-wsch-app" created service "jws-wsch-app" created --> Success Application is not exposed. You can expose services to the outside world by executing one or more of the commands below: 'oc expose svc/jws-wsch-app' Run 'oc status' to view your app.
公开该服务以使应用程序可以被用户访问:
例如,要使
jws-wsch-app
应用程序可以被访问,请执行以下步骤:检查要公开的服务名称:
$ oc get svc -o name
前面的命令会产生以下类型的输出:
service/jws-wsch-app
公开服务:
$ oc expose svc/jws-wsch-app
前面的命令会产生以下类型的输出:
route "jws-wsch-app" exposed
检索公开路由的地址:
oc get routes --no-headers -o custom-columns='host:spec.host' jws-wsch-app
打开 Web 浏览器,再输入 URL 以访问应用。
例如,要访问示例
jws-wsch-app
应用程序,请输入以下 URL:http://<address_of_exposed_route>/websocket-chat
注意在前面的示例中,将
<address_of_exposed_route>
替换为您的部署的适当值。
其他资源