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 应用程序,请执行以下步骤:

    1. 要克隆源代码,请输入以下命令:

      $ git clone https://github.com/jboss-openshift/openshift-quickstarts.git
      Copy to Clipboard Toggle word wrap
    2. 配置Red Hat JBoss Middleware Maven 存储库,参阅 配置 Red Hat JBoss Middleware Maven 存储库

      有关 Maven 存储库的更多信息,请参阅 Red Hat JBoss Ener Enterprise Maven Repository 网页。

    3. 要构建应用程序,请输入以下命令:

      $ cd openshift-quickstarts/tomcat-websocket-chat/
      $ mvn clean package
      Copy to Clipboard Toggle word wrap

      前面的命令会产生以下输出:

      [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] ------------------------------------------------------------------------
      Copy to Clipboard Toggle word wrap

流程

  1. 在本地文件系统中,为二进制构建创建一个源目录和一个 deployments 子目录。

    例如,要为 tomcat-websocket-chat 应用程序创建 /ocp 源目录和 /deployments 子目录,请输入以下命令:

    $ cd openshift-quickstarts/tomcat-websocket-chat/
    $ mkdir -p ocp/deployments
    Copy to Clipboard Toggle word wrap
    注意

    源目录可以包含未包含在 Maven 二进制文件中的应用程序所需的任何内容。如需更多信息,请参阅 JWS for OpenShift S2I 流程

  2. .war.ear.jar 二进制文件复制到 deployments 子目录。

    例如,要复制 tomcat-websocket-chat 应用程序的 .war 文件,请输入以下命令:

    $ cp target/websocket-chat.war ocp/deployments/
    Copy to Clipboard Toggle word wrap
    注意

    在上例中,target/websocket-chat.war 是您要复制的二进制文件的路径。

    源目录的 deployments 子目录中的应用存档复制到 OpenShift 上构建的镜像的 $JWS_HOME/tomcat/webapps/ 目录中。要成功部署应用程序,您必须确保包含 Web 应用数据的目录层次结构是正确的。如需更多信息,请参阅 JWS for OpenShift S2I 流程

  3. 登录到 OpenShift 实例:

    $ oc login <url>
    Copy to Clipboard Toggle word wrap
  4. 如果需要,创建一个新项目。

    例如:

    $ oc new-project jws-bin-demo
    Copy to Clipboard Toggle word wrap
    注意

    在前面的示例中,jws-bin-demo 是您要创建的项目名称。

  5. 识别应用程序要使用的 JWS for OpenShift 镜像流:

    $ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '
    Copy to Clipboard Toggle word wrap

    前面的命令会产生以下类型的输出:

    jboss-webserver56-openjdk8-tomcat9-openshift-ubi8
    Copy to Clipboard Toggle word wrap
    注意

    -n openshift 选项指定要使用的项目。oc get is -n openshift 命令从 openshift 项目中获取镜像流资源。

  6. 创建新构建配置,并确保您指定镜像流和应用程序名称。

    例如,要为 tomcat-websocket-chat 应用程序创建新构建配置,请执行以下操作:

    $ oc new-build --binary=true \
     --image-stream=jboss-webserver56-openjdk8-tomcat9-openshift-ubi8:latest\*
     --name=jws-wsch-app
    Copy to Clipboard Toggle word wrap
    注意

    在前面的示例中,jws-wsch-app 是 JWS for OpenShift 应用的 JWS 的名称。

    前面的命令会产生以下类型的输出:

    --> Found image 8c3b85b (4 weeks old) in image stream "openshift/jboss-webserver56-tomcat9-openshift" under tag "latest" for "jboss-webserver56"
    
        JBoss Web Server 5.6
        --------------------
        Platform for building and running web applications on JBoss Web Server 5.6 - Tomcat v9
    
        Tags: builder, java, tomcat9
    
        * 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
    Copy to Clipboard Toggle word wrap
  7. 启动二进制构建。

    例如:

    $ oc start-build jws-wsch-app --from-dir=./ocp --follow
    Copy to Clipboard Toggle word wrap
    注意

    在前面的示例中,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-5.6/tomcat/webapps` for later deployment...
    '/home/jboss/source/deployments/websocket-chat.war' -> '/opt/jws-5.6/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
    Copy to Clipboard Toggle word wrap
  8. 根据镜像创建新 OpenShift 应用程序:

    例如:

    $ oc new-app jws-wsch-app
    Copy to Clipboard Toggle word wrap
    注意

    在前面的示例中,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 5.6
        --------------------
        Platform for building and running web applications on JBoss Web Server 5.6 - Tomcat v9
    
        Tags: builder, java, tomcat9
    
        * 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.
    Copy to Clipboard Toggle word wrap
  9. 公开该服务以使应用程序可以被用户访问:

    例如,要使 jws-wsch-app 应用程序可以被访问,请执行以下步骤:

    1. 检查要公开的服务名称:

      $ oc get svc -o name
      Copy to Clipboard Toggle word wrap

      前面的命令会产生以下类型的输出:

      service/jws-wsch-app
      Copy to Clipboard Toggle word wrap
    2. 公开服务:

      $ oc expose svc/jws-wsch-app
      Copy to Clipboard Toggle word wrap

      前面的命令会产生以下类型的输出:

      route "jws-wsch-app" exposed
      Copy to Clipboard Toggle word wrap
  10. 检索公开路由的地址:

    oc get routes --no-headers -o custom-columns='host:spec.host' jws-wsch-app
    Copy to Clipboard Toggle word wrap
  11. 打开 Web 浏览器,再输入 URL 以访问应用。

    例如,要访问示例 jws-wsch-app 应用程序,请输入以下 URL:

    \http://<address_of_exposed_route>/websocket-chat

    注意

    在前面的示例中,将 <address_of_exposed_route> 替换为您的部署的适当值。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat