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
一、部署前准备工作
GitHub 上Fork 我的项目。GitHub 项目地址
修改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。 我试过不行。其他的没验证过。
Application Name 应用名称
创建您的应用名称Git Repository Git 仓库地址,这里我们用 Github 的地址
我的测试项目地址,部署前确认已经修改了 mysql_jdbc.properties点击“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 是如何工作的
- 可以阅读这篇文章 https://blog.openshift.com/builds-deployments-services-v3/
- 主要分为以下2个部分
更直白点说
- 从 github 上下载代码(首次,有更新)
- 会创建一个新的 build 。(bulids 菜单里面可以看到列表)
- build 后,会替换掉现有的 image 内容。
- 将image 进行 deployment(部署)
- 将 deployment 的内容放在 pod(容器)中,提供 service 服务。
级阶段,我们只需要关心
- github 代码自动同步
- build 是否成功
- deployment 是否成功
pod 启动是否成功
以上内容在对应的菜单都有列表可以查看。
需要注意的地方
build 只能有一个执行
当您新建 bulid 是,要观察列表中是否有 状态为 “pending”、“runing” 的,如果有,请先关闭它,再执行新的 buildbulid 分支版本
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