3.2. 从二进制工件构建和部署 Java 应用程序


您可以使用二进制源功能在 OpenShift 上部署现有的 Java 应用。

该流程使用 undertow-servlet quickstart 在本地机器上构建 Java 应用程序。quickstart 使用 S2I 二进制源功能将生成的二进制 Artifacts 复制到 OpenShift 中。

先决条件

  • 在本地机器上启用 Red Hat JBoss Enterprise Maven 存储库
  • 获取 JAR 应用存档,并在本地构建应用程序。

    • 克隆 undertow-servlet 源代码:

      $ git clone https://github.com/jboss-openshift/openshift-quickstarts.git
    • 构建应用程序:

      $ cd openshift-quickstarts/undertow-servlet/
      $ mvn clean package
      [INFO] Scanning for projects...
      ...
      [INFO]
      [INFO] ------------------------------------------------------------------------
      [INFO] Building Undertow Servlet Example 1.0.0.Final
      [INFO] ------------------------------------------------------------------------
      ...
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time: 1.986 s
      [INFO] Finished at: 2017-06-27T16:43:07+02:00
      [INFO] Final Memory: 19M/281M
      [INFO] ------------------------------------------------------------------------
  • 在本地文件系统上准备目录结构。

    deployments/ 子目录中的应用存档(其中主二进制构建目录)复制到标准部署文件夹(其中镜像构建在 OpenShift 中)。包含要部署的应用的 Web 应用数据的目录层次结构。

    在本地文件系统和 deployments/ 子目录上为二进制构建创建一个主目录。将构建的 JAR 存档复制到 deployments/ 子目录中:

    undertow-servlet]$ ls
    dependency-reduced-pom.xml  pom.xml  README  src  target
    $ mkdir -p ocp/deployments
    $ cp target/undertow-servlet.jar ocp/deployments/

流程

  1. 运行以下命令并提供您的凭证来登录到 OpenShift 实例:

    $ oc login
  2. 创建一个新项目

    $ oc new-project jdk-bin-demo
  3. 创建新的二进制构建,并指定镜像流和应用程序的名称:

    $ oc new-build --binary=true \
    --name=jdk-us-app \
    --image-stream=java:11
    --> Found image c1f5b31 (2 months old) in image stream "openshift/java:11" under tag "latest" for "java:11"
    
        Java Applications
        -----------------
        Platform for building and running plain Java applications (fat-jar and flat classpath)
    
    --> Creating resources with label build=jdk-us-app ...
        imagestream "jdk-us-app" created
        buildconfig "jdk-us-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/jdk-us-app'
  4. 启动二进制构建。

    指示 oc 可执行文件使用您在上一步中创建的二进制构建主目录,作为包含 OpenShift 构建的二进制输入的目录:

    $ oc start-build jdk-us-app --from-dir=./ocp --follow
    Uploading directory "ocp" as binary input for the build ...
    build "jdk-us-app-1" started
    Receiving source from STDIN as archive ...
    ==================================================================
    Starting S2I Java Build .....
    S2I source build with plain binaries detected
    Copying binaries from /tmp/src/deployments to /deployments ...
    ... done
    Pushing image 172.30.197.203:5000/jdk-bin-demo/jdk-us-app:latest ...
    Pushed 0/6 layers, 2% complete
    Pushed 1/6 layers, 24% complete
    Pushed 2/6 layers, 36% complete
    Pushed 3/6 layers, 54% complete
    Pushed 4/6 layers, 71% complete
    Pushed 5/6 layers, 95% complete
    Pushed 6/6 layers, 100% complete
    Push successful
  5. 根据构建创建新的 OpenShift 应用程序:

    $ oc new-app jdk-us-app
    --> Found image 66f4e0b (About a minute old) in image stream "jdk-bin-demo/jdk-us-app" under tag "latest" for "jdk-us-app"
    
        jdk-bin-demo/jdk-us-app-1:c1dbfb7a
        ----------------------------------
        Platform for building and running plain Java applications (fat-jar and flat classpath)
    
        Tags: builder, java
    
        * This image will be deployed in deployment config "jdk-us-app"
        * Ports 8080/tcp, 8443/tcp, 8778/tcp will be load balanced by service "jdk-us-app"
          * Other containers can access this service through the hostname "jdk-us-app"
    
    --> Creating resources ...
        deploymentconfig "jdk-us-app" created
        service "jdk-us-app" created
    --> Success
        Run 'oc status' to view your app.
  6. 将服务作为路由公开。

    $ oc expose svc/jdk-us-app
    route "jdk-us-app" exposed
  7. 获取路由:

    $ oc get route
  8. 使用 URL (上一命令输出中的 HOST/PORT 字段的值)访问浏览器中的应用程序。

其他资源

  • 使用 二进制源 功能在 OpenShift 上部署现有的 Java 应用。
  • 有关如何配置 maven 存储库的更多信息,请参阅使用 Maven 存储库
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部