OPENSHIFT V3 上部署 JavaWeb

本文示例 : GitHub 项目地址

Demo 搭建环境

  • OS : macOS Sierra
  • IDE : IntelliJ IDEA 2017
  • JDK : 1.8
  • Tomcat : 8.0.24

Demo 集成内容及版本

  • Maven 3.3
  • SpringMVC-4.3.8
  • MyBatis 3.4.4
  • Mysql 驱动6.0.6
  • freemarker 2.3.27 (模板引擎)
  • freemarker 集成 override,block,extends Rapid-framework , rapid-core 4.0

一、部署前准备工作

  1. GitHub 上Fork 我的项目。GitHub 项目地址

  2. 修改src/main/resources/database/mysql_jdbc.properties

    • 修改 jdbc.url
    • 修改 jdbc.username
    • 修改 jdbc.password
#JDBC Global Setting
# mysql 6.0 以下驱动
jdbc.driver=com.mysql.jdbc.Driver
# mysql 6.0 驱动
#jdbc.driver=com.mysql.cj.jdbc.Driver

# local database
#jdbc.url=jdbc:mysql://Host:3306/database-Name?characterEncoding=utf-8&autoReconnect=true
#jdbc.username=name
#jdbc.password=password

# openshift database
jdbc.url=jdbc:mysql://修改为您在 OPENSHIFT 中 Mysql 的 Service Name(OPENSHIFT 默认是 mysql):3306/修改为您在 OPENSHIFT 中 Mysql 的 DataBase Name?characterEncoding=utf-8&autoReconnect=true
jdbc.username=name
jdbc.password=password

##DataSource Global Setting
#配置初始化大小、最小、最大
ds.initialSize=1
ds.minIdle=1
ds.maxActive=20

#配置获取连接等待超时的时间
ds.maxWait=60000

#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
ds.timeBetweenEvictionRunsMillis=60000

#配置一个连接在池中最小生存的时间,单位是毫秒
ds.minEvictableIdleTimeMillis=300000

jdbc.removeAbandoned=true
jdbc.removeAbandonedTimeout=1800
jdbc.logAbandoned = true

二、执行数据库脚本

上一章我们已经讲了如何创建 Mysql。
如果你的 OPENSHIFT 已经创建了 Mysql,执行脚本即可。
如果没有可以点击查看【1.1 部署 Mysql】

脚本是 GitHub 项目地址下的 init.sql。简单的用户表与用户查询。

三、部署 Javaweb

  • 同 Mysql 一样。在 OPENSHIFT 的Project 主页面,点击“Add to Project”
  • 在 Browse Catalog 中输入 Tomcat,选择 Red Hat JBoss Web Server 3.0 Tomcat 8

    看个人喜好,Server 3.0 tomcat 7。 我试过不行。其他的没验证过。

    1. Application Name 应用名称
      创建您的应用名称

    2. Git Repository Git 仓库地址,这里我们用 Github 的地址
      我的测试项目地址,部署前确认已经修改了 mysql_jdbc.properties

    3. 点击“Create”

四、部署后测试

Api 测试

http://your-openshift-domain/api/queryUserById/1

Controller 测试

http://your-openshift-domain/test/getUserView?userId=1

http://your-openshift-domain/test/getUserJson/1

五、部署应用的流程&问题

OPENSHIFT 是如何工作的

更直白点说

  1. 从 github 上下载代码(首次,有更新)
  2. 会创建一个新的 build 。(bulids 菜单里面可以看到列表)
  3. build 后,会替换掉现有的 image 内容。
  4. 将image 进行 deployment(部署)
  5. 将 deployment 的内容放在 pod(容器)中,提供 service 服务。

级阶段,我们只需要关心

  1. github 代码自动同步
  2. build 是否成功
  3. deployment 是否成功
  4. pod 启动是否成功

    以上内容在对应的菜单都有列表可以查看。

需要注意的地方

  1. build 只能有一个执行
    当您新建 bulid 是,要观察列表中是否有 状态为 “pending”、“runing” 的,如果有,请先关闭它,再执行新的 build

  2. bulid 分支版本

    • build 支持分支版本,或者某一次的提交作为初始版本,如果不选择,默认为 master

    • 选择菜单 builds->builds ,选择列表中的项目名。 进入项目的历史 build 页面。 点击“Actions”,选择 edit

    • 选择 显示高级选项

      • Git Reference 提示也说了,可以指定 branch、tag、commit 作为此次编译的参考
      • Context Dir ,这个目录就是你需要发布的内容目录了,默认情况下就是/根目录,但是如果你的 GitHub 像官方提供的java-quickstart 这样,是包含了多个 Project 的。那么你就要选择一个目录作为你这个应用程序的 Project

        举例来说:我要发布 java-quickstart 中的 tomcat-websocket-chat 。并且为 branch 1.2 这个版本的。
        Git Repository URL : https://github.com/jboss-openshift/openshift-quickstarts
        Git Reference : 1.2
        Context Dir : tomcat-websocket-chat

头疼医头,脚痛医脚

  • 发布过程,可能会出现 build 失败,deployment失败, pods 失败。

    build 成功的标志“complate”状态, depoyment 成功标志“Active”状态,pod 成功标志“Running”状态,并且Containers Ready 为 “1/1”

  • 那个环节失败了,点击进入进行重新的 build、deply

祝您成功

results matching ""

    No results matching ""