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/web-servers/tomcat-websocket-chat-quickstart.git
    2. 配置Red Hat JBoss Middleware Maven 存储库,参阅 配置 Red Hat JBoss Middleware Maven 存储库

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

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

      $ 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] ------------------------------------------------------------------------

流程

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

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

    $ cd tomcat-websocket-chat-quickstart/tomcat-websocket-chat/
    $ mkdir -p ocp/deployments
    注意

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

  2. .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 流程

  3. 登录到 OpenShift 实例:

    $ oc login <url>
  4. 如果需要,创建一个新项目。

    例如:

    $ oc new-project jws-bin-demo
    注意

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

  5. 识别应用程序要使用的 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 项目中获取镜像流资源。

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

    例如,要为 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
  7. 启动二进制构建。

    例如:

    $ 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
  8. 根据镜像创建新 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.
  9. 公开该服务以使应用程序可以被用户访问:

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

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

      $ oc get svc -o name

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

      service/jws-wsch-app
    2. 公开服务:

      $ oc expose svc/jws-wsch-app

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

      route "jws-wsch-app" exposed
  10. 检索公开路由的地址:

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

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

    http://<address_of_exposed_route>/websocket-chat

    注意

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

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.