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/jboss-openshift/openshift-quickstarts.git
$ git clone https://github.com/jboss-openshift/openshift-quickstarts.git
Copy 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 openshift-quickstarts/tomcat-websocket-chat/ mvn clean package
$ cd openshift-quickstarts/tomcat-websocket-chat/ $ mvn clean package
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令会产生以下输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
在本地文件系统中,为二进制构建创建一个源目录和一个
deployments
子目录。例如,要为
tomcat-websocket-chat
应用程序创建/ocp
源目录和/deployments
子目录,请输入以下命令:cd openshift-quickstarts/tomcat-websocket-chat/ mkdir -p ocp/deployments
$ cd openshift-quickstarts/tomcat-websocket-chat/ $ mkdir -p ocp/deployments
Copy 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-demo
Copy 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-webserver56-openjdk8-tomcat9-openshift-ubi8
jboss-webserver56-openjdk8-tomcat9-openshift-ubi8
Copy 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-webserver56-openjdk8-tomcat9-openshift-ubi8:latest\*
$ oc new-build --binary=true \ --image-stream=jboss-webserver56-openjdk8-tomcat9-openshift-ubi8:latest\* --name=jws-wsch-app
Copy 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 --follow
Copy 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-app
Copy 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 name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令会产生以下类型的输出:
service/jws-wsch-app
service/jws-wsch-app
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 公开服务:
oc expose svc/jws-wsch-app
$ oc expose svc/jws-wsch-app
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的命令会产生以下类型的输出:
route "jws-wsch-app" exposed
route "jws-wsch-app" exposed
Copy 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-app
Copy 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>
替换为您的部署的适当值。