书接上文
已经搭建好了kie-server的docker swarm集群. 没有搭建business-central是集群是因为这是个页面的可视化的开发环境 一来面向开发人员,不需要集群部署 二来他的数据是放在本地的git服务器上的. 所以每个node的数据不会统一 三来部署好了之后页面也打不开… 四来business-central是只可以有一个kie-server的远程服务器. 天生就不能集群部署,五来,搭建kie-server的集群是是不能使用 --link参数来指定对应的business-central的, 也就是说搭建的kie-server集群暂时不能指定business-central.

ok结论是 kie-server是三个node的集群, business-central不集群部署,只部署一台服务器. 而且business-central与kie-server不再进行连接. 也就是b 不指定kie-server远程服务器 . 现状暂时如此,以下是讲如此架构下的发布流程.

kie-server对外暴露了一个接口, 用于发布项目.

get请求 http://xxxx.104:8180/kie-server/services/rest//server/containers/testCreate
body:

每个node是有本地maven库的, 会根据请求的三个参数从maven本地库找到这个jar 然后部署成一个kie-server里的一个容器. 容器就是kie-server对外提供服务的一个服务器之下的一个最高的组织方式.

ok为了验证可用性 手动把jar分别放进每个node里 并分别执行cp命令将jar从服务器的临时目录copy到容器里maven本地库下的指定目录里

结果是确实发送了get命令后会部署成功. ok验证通过. 但问题也很明显. 发布过程过于手动化, 对于开发人员来说很容易造成误操作, 比如某个node遗漏了cp命令, 还有一个问题 更严重, 因为已经利用了swarm的特性 已经是负载均衡的了, 所以put请求到了哪个node是不确定的, 需要打开日志发送多次put请求 确保每个node都发布成功了. 这个操作很…很蠢

ok在上一步的基础上更进一步假设如果每个node都连接同一个远程maven库, 那就只需要将代码发布到这个远程库, 即可以达到让每个node都能接受到这个资源从而进行发布, 就不需要人工把jar copy到各个node了./opt/jboss/.m2/repository目录会自动建的, 下面有setting.xml配置文件 文件内容很有帮助,
首先setting.xml是maven的配置文件 配置了服务器在哪等等信息. 注释的大致意思是
KIE_MAVEN_REPO - Defaults to http://localhost:8080/drools-wb/maven2
KIE_MAVEN_REPO_USER - Defaults to admin
KIE_MAVEN_REPO_PASSWORD - Defaults to admin
文件使用环境变量来配置, 三个关键的环境变量如上.
也就是说我们创建 kie-server集群的时候如果指定了环境变量 也就可以给每个node指定他的maven服务器地址. 很nice

ok下一步要开一个maven远程服务器 ,并验证可以将本地代码install的jar报 deploy到远程maven服务器.
docker run -d -p 8001:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
第一步利用docker创建一个maven服务器的容器. docker真是越用越好用.
然后http://172.16.250.104:8001 就可以看到maven的管理页面了, 需要密码

进入容器根目录, 下面有nexux-date目录, 里面原来有个admin.password的文件. 打开里面就是admin 的密码 .因为登录后改密码之后这个默认密码的文件消失了, 所以截图里没有


主要是复制下这两个的url

然后本地pc打开 IDEA, 设置 maven /user serttings file override . 然后编辑本地的setttings.xml 全文如下:

<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd"><pluginGroups> </pluginGroups><proxies></proxies><servers><server><id>nexus-releases</id><username>admin</username><password>9b1f9129-0b87-460c-9435-37a754198655</password></server><server><id>nexus-snapshots</id><username>admin</username><password>9b1f9129-0b87-460c-9435-37a754198655</password></server></servers><mirrors><mirror><id>maven-default-http-blocker</id><mirrorOf>external:http:*</mirrorOf><name>Pseudo repository to mirror external repositories initially using HTTP.</name><url>http://0.0.0.0/</url><blocked>true</blocked></mirror></mirrors><profiles><profile><id>nexus</id><properties><altSnapshotDeploymentRepository>nexus-snapshots::default::http://172.16.250.104:8001/repository/maven-snapshots/</altSnapshotDeploymentRepository><altReleaseDeploymentRepository>nexus-releases::default::http://172.16.250.104:8001/repository/maven-releases/</altReleaseDeploymentRepository></properties></profile></profiles><activeProfiles><activeProfile>nexus</activeProfile></activeProfiles>
</settings>

关键信息是server和两个url.
maven的配置好了, 然后是项目代码的配置,
对项目来说 ,因为项目用的maven 的配置文件里有了profile nexus, 所以在IDEA里打开项目可以看到profiles nexus是固定选中的
打开项目文件里的 pom.xml 顶级节点下添加如下代码

<distributionManagement><!--正式版本--><repository><!-- 在settings.xml中<server>的id--><id>nexus-releases</id><url>http://172.16.250.104:8001/repository/maven-releases/</url></repository><!--快照版本--><snapshotRepository><id>nexus-snapshots</id><url>http://172.16.250.104:8001/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>

ok 这样项目在执行 maven deploy命令的时候就会把install的时候生成的jar发布到远程服务器.根据版本号是否是快照 决定发布到正式还是快照的repostitory, 效果如下

这时候就可以在maven的后台管理页面看到刚deploy的jar
ok至此maven服务器和发布流程已经验证通过, 结束.
下一步是kie-server在部署集群的时候设置环境变量, 让集群中的每个node都连上maven服务器.
还有个问题没有解决, 即put发布命令是被负载均衡了的, 怎么保证每个节点都能确保发布.可能要发布的时候指定一下网络,不用ingress 发布好了之后再改成ingress ? 这要考虑下, 不过还好问题不大

待续

ps: docker还挺有意思的

docker 部署maven服务器,并将代码发布到maven服务器,并kie-server关联相关推荐

  1. 使用docker部署nginx搭建简单的idea-2019 jrebel插件激活服务器

    使用docker部署nginx搭建简单的idea-2019 jrebel插件激活服务器 前言 之前用的jrebel激活方式一直都是用的 *lanyus* 大神的 [jrebel激活](http://i ...

  2. 如何将自己的代码发布到Maven中央仓库?

    去年在公司做工作流相关业务时,当时使用flowable做引擎,中途涉及到一些业务上的需求,自己整理了一些代码,考虑到开源精神,当时就想着将于公司业务无关的代码抽离出来,放到Maven中央仓库中,以供别 ...

  3. docker部署服务,本地文件路径正常,linux服务器文件路径找不到的小坑

    还是想每天坚持写点什么,也是菜的出奇,只能写一些很表层的东西.今天就记录一下工作中遇到docker部署到linux服务器的一个小坑. 项目中有个预览功能,要求返回给前台base64的图片,但是ftp上 ...

  4. maven私服、将项目发布到maven私服、从私服下载jar到本地仓库、将第三方jar安装到本地仓库和maven私服

    上面启动start时,jdk1.9报错,解决方法参考:https://blog.csdn.net/qq_33638719/article/details/83064664 访问http://local ...

  5. python做项目管理代码_代码发布项目(三)——python操作git、代码发布流程(服务器管理、项目管理)...

    一.python如何操作git 如果你想用python代码操作git需要下载一个模块 安装 pip install gitpython 基本使用 #从远处仓库下载代码到本地 importosfrom ...

  6. ibm服务器报错代码大全_IBM_x系列服务器报错代码

    1 / 7 适用机型 : 所有服务器 以下报错信息,只是对目前大部分 X 系列服务器适用的报错信息.仅供参考,如果服务器 使用过程中发生橘黄色感叹号灯常亮, 或者服务器停止在自检过程中, 建议客户尽快 ...

  7. 2022-4-16 CGI服务器原理示例代码《Linux高性能服务器》笔记

    服务端 #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include&l ...

  8. 云发布的Docker部署文档

    云发布的Docker部署文档 文章目录 云发布的Docker部署文档 1.服务器安装 Docker 2.修改后端微服务的配置 2.1 修改 MySQL 的配置 2.2 修改 Redis 的配置 2.3 ...

  9. 服务器Docker部署springboot项目

    前言:之前项目重来没有用到过Docker部署,最近的一个项目需要,从头开始整一遍Docker,记录一下所踩的坑. 1.开防火墙 腾讯云服务器,买来没开防火墙,不知道要不要紧索性就开起来吧 # 查看防火 ...

最新文章

  1. 7.Array 数组对象
  2. Global Mapper怎么能够导出.xyz文件
  3. 新视角来了:《用户体验四维度》
  4. 把字符串每隔四个字符使用“-”中横线分隔的方法
  5. vue插槽的使用(slot)
  6. 从渲染页面的角度来聊一聊浏览器的工作原理
  7. 判断并输出打印前一百个回文素数,每行10个
  8. Spring - Configuration Metadata
  9. python排序算法的时间复杂度_Python算法的时间复杂度和空间复杂度(实例解析)
  10. Java中的ConcurrentHashMap
  11. fread与fread_s读取文件(二进制文件)
  12. blender源代码分析----第三方库的说明
  13. 【C 语言】文件操作 ( ftell 函数 | 使用 ftell 函数获取当前指针位置 | 通过 ftell 计算文件大小 )
  14. 浅谈IPFS新激励层Filenet究竟是什么,令牌、公链、应用?超级云系统!
  15. 高等数学微积分公式大全
  16. 新书《完美统计图:Word/PPT/Excel数据可视化宝典》,包邮送
  17. android 环信 emmessagelistener,集成环信实现简单聊天功能
  18. Java后端对接微信支付(微信小程序、APP、PC端扫码)非常全,包含查单、退款
  19. Python开发中的接口详解和使用方法
  20. muduo学习笔记:net部分之Http-协议简介

热门文章

  1. License Plate Detection and Recognition in Unconstrained Scenarios
  2. Quarts任务调度
  3. TouchScript如何取消鼠标图标
  4. python创意爱情代码-python创意内容
  5. 看完全都会了!拼多多三面惨败,社招面试心得
  6. 鸿蒙系统手机魅族,华为鸿蒙系统手机进展顺利 魅族OPPO或将加入
  7. layui对开关按钮回显
  8. 转: C#控制鼠标动作
  9. php 引用 无限极分类,php 无限极分类(递归Or引用两种方法)
  10. 企业应该怎样做好设备管理?