WisPlanner的环境搭建 三 构建wisp-rs的Docker image

1. 了解wisp-rs部署的基本概念

  • domain的概念,wisp-rs是一个osgi的服务端系统,他本身是支持多企业运行的。每个企业都可以有独特的系统配置,wisp-rs可以对这些不同的配置统一管理。这些配置放置在一个domain的目录中。wisp-rs的启动参数需要指定这一目录。很明显,如果我们要运行多个wisp-rs的集群,这个目录是完全可以共享的。
  • OSGi,wisp-rs是基于Equinox OSGi的系统,他的启动可以用两种方式:1)使用Java命令行启动,2)使用Equinox Launcher启动。这两者都是可行的,我们选择使用Equinox Launcher启动,可以全部读取配置文件。如果选择Equinox启动,我们运行的程序就是rs,它会读取同目录下的rs.ini文件作为配置。
  • 配置,wisp-rs有两个配置文件,包含了大量的配置,java的启动参数和Launcher的启动参数只能在rs.ini中配置,其他的配置可以放置在config.ini中,也可以放置在rs.ini中。那么,我们需要规划一下配置放置的位置,在rs.ini中只配置Java参数,启动器,服务端口号,其余的在config.ini中进行配置。config.ini完全可以在各个wisp-rs的容器中统一。
  • OSGi 运行区,标准的Equinox OSGi在启动时会在configuration目录下产生一组OSGi的文件。大家先姑且认为是缓存。而config.ini同样也在这个目录中。那么问题出现了,我们希望config.ini可以暴露到host上进行修改,而OSGi的运行时产生的文件,我们并不想理会。如果我们直接将configuration目录给host挂载,肯定是行不通的。所以,我们需要给wisp-rs增加一个参数,改变它的OSGi运行区。

2. 一个标准的wisp-rs的运行时目录结构

他在运行环境的目录结构包括:
domain //下面放置的是各个不同企业的业务配置
----abc1 //abc1公司的业务配置
----abc2 //abc2公司的业务配置
----host //主机业务配置
----scheme //业务模板
server //下面是运行所需的系统配置和Jar文件
----configuration //OSGi 运行区和config.ini文件
----jre // 我们用的jre8
----lang //语言包
----log //系统日志
----plugins //OSGi bundle,jar包
----rs.ini //rs配置
----rs//可执行文件
XXX //其他第三方的文件,库等,例如:hanlp的字典

3. wisp-rs目录结构的改造

我们希望 wisp-rs的集群在业务层面(domain)上是共享的,而且,domain里面所有的文件对于wisp-rs而言都是只读的。所以,domain可以mount到host上。
configuration里面的config.ini是共享的,但OSGi运行区是内部的。我们要把他们分开。在rs.ini中增加一行配置新的运行区目录:

-Dosgi.configuration.area=osgiconf

那么,这样wisp-rs在启动时就会在osgiconf目录中存放运行时文件。
lang,语言文件,也是可以在各个wisp-rs容器间共享的。
所以,我们把wisp-rs的文件夹结构改造如下:
configuration
----domain
----lang //语言包
----config.ini
----其他的配置文件
server
----osgiconf //OSGi 运行区,这个目录不需要手工建,系统启动时会自动建立
----jre // 我们用的jre8
----log //系统日志
----plugins //OSGi bundle,jar包
----rs.ini //rs配置
----rs //可执行文件

image.png

image.png

image.png

4. 根据新的目录关系重新配置

config.ini
我们后面将在/wisp-rs目录中安装系统,config.ini的配置修改为以下

org.eclipse.equinox.http.jetty.customizer.class=com.bizvisionsoft.server.jetty.RSServerCustomizer
com.bizvisionsoft.service.url=http://rs.wisplanner.com:9158/services
com.bizvisionsoft.client.url=https://www.wisplanner.com/
com.bizvisionsoft.service.DPSList=192.168.101.13:8199
com.bizvisionsoft.service.MongoDBDumpCmd=mongodump
com.bizvisionsoft.service.MongoDBStoreCmd=mongorestore
com.bizvisionsoft.service.ServerConfigRootPath=/wisp-rs/configuration/domains
com.bizvisionsoft.service.Lang=/wisp-rs/configuration/lang
com.bizvisionsoft.service.Swagger=/wisp-rs/configuration/swagger.properties
com.bizvisionsoft.service.MongoDBConnector=/wisp-rs/configuration/db.properties
logback.configurationFile=/wisp-rs/configuration/log-rs.xml
com.hankcs.hanlp.properties=/wisp-rs/configuration/hanlp.properties
org.quartz.properties=/wisp-rs/configuration/quartz-db.properties

hanlp.properties

root=/wisp-rs/configuration/hanlp1.7.1

db.properties
更改为我们上一章安装的复制集地址

db.name=bvs_host
db.hosts=192.168.100.2:27017 192.168.100.3:27017 192.168.100.4:27017
db.user=
db.password=

quartz-db.properties
更改为我们上一章安装的复制集地址

org.quartz.jobStore.mongoUri=mongodb://192.168.100.2:27017,192.168.100.3:27017,192.168.100.4:27017

rs.ini

-startup
plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.551.v20171108-1834

-console
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-Xms2048m
-Xmx2048m
-server

-Dosgi.configuration.area=osgiconf
-Declipse.ignoreApp=true
-Dosgi.noShutdown=true
-Dorg.osgi.service.http.port=9158
-Dosgi.console=6123

4. 准备复制到Docker Image的文件

进入wisp-rs的上级目录,压缩wisp-rs为tag.gz文件,这个文件在ADD到Image时会自动解压。

wis@wis:~/build/server$ tar -cvf wisp-rs.tar.gz wisp-rs

5. 创建Dockerfile文件

在wisp-rs的同级目录下创建一个Dockerfile文件,内容如下:

FROM ubuntu
LABEL version="6.0" description="wisp-rs" by="ghuazh"
ADD wisp-rs.tar.gz /
ENV LANG C.UTF-8
VOLUME ["/wisp-rs/configuration"]
WORKDIR /wisp-rs/
EXPOSE 9158 6123
CMD ["./rs"]

具体的Docker Image Build,请查看更多的资料
https://docs.docker.com/get-started/part2/
https://docs.docker.com/develop/dev-best-practices/

6. 构建 Docker Image

wis@wis:~/build/server$ sudo docker build -t wisp-rs:latest .
Sending build context to Docker daemon  2.359GB
Step 1/8 : FROM ubuntu
 ---> 4e5021d210f6
Step 2/8 : LABEL version="6.0" description="wisp-rs" by="ghuazh"
 ---> Running in ff7bfdbc519a
Removing intermediate container ff7bfdbc519a
 ---> 3e7171276c56
Step 3/8 : ADD wisp-rs.tar.gz /
 ---> 275032b2f4ca
Step 4/8 : ENV LANG C.UTF-8
 ---> Running in 4366bcd80606
Removing intermediate container 4366bcd80606
 ---> 5275b33770ed
Step 5/8 : VOLUME ["/wisp-rs/configuration"]
 ---> Running in 70c88edbd7b0
Removing intermediate container 70c88edbd7b0
 ---> ef2f55fb1c9d
Step 6/8 : WORKDIR /wisp-rs/
 ---> Running in 2ef2dcd1a6ac
Removing intermediate container 2ef2dcd1a6ac
 ---> aff1fc71e8c3
Step 7/8 : EXPOSE 9158 6123
 ---> Running in 0cd7dcb34b60
Removing intermediate container 0cd7dcb34b60
 ---> 8e13cb20206d
Step 8/8 : CMD ["./rs"]
 ---> Running in d44af0cde5c3
Removing intermediate container d44af0cde5c3
 ---> f6f42d9ec009
Successfully built f6f42d9ec009
Successfully tagged wisp-rs:latest

现在已经构建成功:

wis@wis:~/build/server$ sudo docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wisp-rs             latest              f6f42d9ec009        About an hour ago   441MB
mongo               latest              fddee5bccba3        3 days ago          388MB
alpine              latest              a187dde48cd2        4 weeks ago         5.6MB
ubuntu              latest              4e5021d210f6        4 weeks ago         64.2MB

7. 创建 Docker Container 运行wisp-rs

sudo docker run --name wisp-rs --network mongo --ip 192.168.100.10 -p 9158:9158 \
 -v /home/wis/build/server/configuration:/wisp-rs/configuration -d wisp-rs

运行成功后,我们可以在浏览器上查看wisp-rs的swagger页面


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容