微服务整合及Jenkins的使用

任务一 Docker Compose编排工具

  1. 安装条件
    Docker Compose是依赖于Docker引擎的,所以在安装Docker Compose之前要确保机器上已经安装了Docker.
  2. 安装Compose

(1)使用curl命令从GitHub的Compose仓库拉取Docker Compose

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用


(2)更改Docker Compose的可执行文件权限

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_02


(3)查看安装的Docker Compose效果及版本

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_03


2. 卸载Compose

$ sudo rm /usr/local/bin/docker-compose

3. Compose file文件的使用说明

Docker Compose编排工具的使用非常简单,只需如下三步

a) 编写Dockerfile文件;

b) 定义yml文件(通常是docker-compose.yml);

c) 运行服务部署命令。

任务二 微服务与Docker的整合

  1. 添加Dockerfile文件
  2. 针对一个子项目模块编写对应的Dockerfile文件。这里以用户订单管理微服务模块为例,Dockerfile内容如下
  3. 添加dockerfile-maven插件
  4. 添加docker-compose.yml配置文件

任务三 环境搭建以及镜像准备
一. 环境搭建

  1. 搭建Docker主机
    本次实验因为是基于之前的Swarm集群而做,三台主机已安装配置好docker。
  2. 安装应用编译工具JDK
    (1)上传所需Linux版本的JDK工具包并解压

(2)将解压下的文件移动到自定义目录下(此处有误,应为 cp -r jdk1.8.0_131 /usr/lib/jvm)

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_04


(3)配置环境变量(编辑/etc/profile)

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_05


(4)生效环境变量并测试java是否正确安装(编辑/etc/profile)

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_06


3. 安装应用打包工具Maven

(1)上传所需Linux版本的Maven工具包并解压, 将解压下的文件移动到自定义目录下

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_07


(2)添加环境变量

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_08


(3)生效环境变量查看Maven信息

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_09


二. 镜像准备

(1)修改配置位置settings.xml文件

由于之前dockerfile-maven的配置,在完成打包后会自动构建镜像并推送到指定仓库,但无论是推送到Docker Hub还是本地私有镜像仓库,必须先登录认证才可以推送。因此需要修改Maven存放jar文件的位置以及配置服务认证信息。

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_10


jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_11


(2)上传项目

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_12


(3)执行mvn install打包(一定要切换到程序pom.xml位置,同时因为我在本地执行过mvn install,所以我将repo复制到了集群中)

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_13


jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_14


jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_15


(4)查看生成镜像

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_16


jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_17

任务四 微服务的手动部署

一. 非集群环境下的服务部署

(1)登录私有仓库

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_18


(2)部署服务(进入到项目docker-compose.yml文件所在目录下,执行服务部署命令部署整个微服务项目)

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_19


jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_20


(3)验证服务是否启动

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_21


(4)查看项目启动情况

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_22


(5)关闭整个服务

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_23


二. 集群环境下服务部署

  1. 集群服务中的网卡选择性注册
    (1)查看网络列表详情
  2. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_24


  3. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_25

  4. (2)根据微服务项目的需求,在集群环境下预先自定义一个以overlay为驱动的网络进行本地集群服务网络管理
  5. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_26

  6. (3)在所有需要注册到Eureka注册中心的服务(包括microservice-gateway-zuul,microservice-orderservice和microservice-userservice服务)的配置文件application.yml中,添加指定注册到Eureka中心的优选服务子网地址信息
  7. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_27


  8. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_28


  9. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_29

  10. (4)修改服务部署的编排文件docker-compose.yml,将所有服务启动时的网络设置为前面预先定义的microservice_net网络来进行网络管理,将修改后的编排文件重命名为docker-compose-swarm.yml
  11. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_30


  12. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_31


  13. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_32

  14. 集群服务部署
    (1)登录私有仓库并部署服务
  15. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_33

  16. (2)查看服务列表详情
  17. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_34

  18. (3)在集群管理节点上使用docker stack相关指令查看整个微服务项目在集群节点的分配与启动情况
  19. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_35

  20. (4)在集群管理节点上通过docker service提供的服务日志指令来进一步查看某个具体服务从启动到运行的整个日志情况
  21. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_36

  22. 微服务测试
    (1)通过visualizer集群服务可视化工具查看服务启动情况。微服务项目部署成功后,可以通过地址http://192.168.1.3:8081(对应您集群的manager1的主机地址)查看集群服务可视化工具visualizer界面的显示情况
  23. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_37

  24. (2)通过Eurkea注册中心查看服务的启动情况,当然也可以通过地址192.168.1.3:8761访问Eureka服务注册中心的情况,查看其他微服务是否都已经启动并注册到该注册中心
  25. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_38

  26. (3)将数据库数据初始化。MySQL数据库是使用Docker容器构建的,所以对MySQL数据库进行初始化时需要先安装一个MySQL客户端
  27. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_39

  28. (4)连接数据库(默认密码root)
  29. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_40

  30. (5)创建所需要的数据库microservice_mallmanagement及表和数据
  31. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_41


  32. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_42


  33. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_43

  34. (6)测试微服务(分别连接用户管理微服务和订单管理微服务的访问地址进行测试)
  35. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_44


  36. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_45


  37. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_46


  38. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_47


  39. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_48


  40. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_49

  41. (7)测试验证API网关服务
  42. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_50


  43. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_51


  44. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_52


  45. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_53

任务五 使用JenKins自动部署微服务

  1. Jenkins介绍
    Jenkins是一个基于Java开发的开源软件项目,用于支持构建,部署和自动化任何项目。在实际开发中,通常将它作为项目的持续集成,部署工具来使用。Jenkins进行项目集成管理的流程如下。
    (1)开发人员将更改后的代码提交到代码仓库中(如GitHub);
    (2)持续集成工具Jenkins会定期(或人工手动)从代码仓库中拉取指定项目;

    (3)Jenkins工具会根据具体配置,自动化打包,构建镜像,推送镜像,并最终生成Docker容器来启动服务,形成对应的测试环境;
    (4)测试人员会在对用的测试环境下测试Jenkins自动化集成,部署的服务;
    (5)当项目测试成功后,可以使用Jenkins工具将测试成功的项目自动构建到发布环境下,也可以人工手段部署到发布环境下。
  2. Jenkins安装
    (1)下载Jenkins

    (2)上传至虚拟机并启动Jenkins服务


    (3)Jenkins初始化安装(通过主节点IP地址:49001访问)



    (4)初始化认证密码


    (5)初始化插件安装


    (6)创建管理员用户(上一步插件安装完毕后自动转到该页面)





    到达该主页面后,就表示Jenkins安装及初始化完毕。
  3. Jenkins集成插件配置
    (1)安装Maven插件(依次点击主页面的”系统管理”–>”插件管理”–>”可选插件”面板,然后再右侧搜索框中输入”Maven Intergration”关键字进行搜索。)



    (2)系统全局插件配置(依次单击主页面的”系统管理”–>”全局工具配置”面板,进入全局插件配置页面,配置插件效果如下)



    点击”保存”按钮跳转到主页面,至此,Jenkins插件配置完成。
  4. 服务自动化配置
  5. 构建新任务
  6. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_54


  7. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_55


  8. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_56

  9. (1)配置源码仓库地址
  10. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_57


  11. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_58

  12. (2)构建触发器
  13. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_59

  14. (3)服务发布配置(在Post Steps页面,选择”Add post-build step”下拉列表中的”Execute shell” 选项,并在命令框中输入需要发布的shell指令。为了确保集群环境下服务的正常部署,需要确认集群已经开启并且已经预先自定义好指定网段的网络,同时还要在集群管理节点进行私有仓库登录认证;上述配置完毕后,单击左下角”保存”按钮跳转到该任务主页面)
  15. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_60


  16. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_61

  17. 自动化部署服务
    (1)单击任务主界面左侧的”立即构建”按钮后,会触发一次立即构建项目的动作,然后整个服务就会进入自动构建过程。
  18. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_62

  19. (2)单击”构建历史”中的倒三角,选择”控制台输出”选项查看整个构建过程的输出信息
  20. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_63


  21. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_64

  22. (3)测试
  23. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_65

实验过程中遇到的错误:

(一) Maven install失败

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_66


解决方法:将原程序Maven Plugin的版本1.3.6改为1.4.9

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_67


(二)执行java –jar Jenkins.war –httpport=49001失败

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_68


解决方法:在/etc/hosts里面加入集群中三台主机的主机名和IP地址使之映射

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_69


(三)源码管理输入git地址报错(在该地址后需要加.git,这里因为上一次试过还是同样的错所以在截图中没有.git后缀)

jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_70


解决方法:在集群主节点安装git

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_71


jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_72


jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_73


(4)登录私有仓库失败

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_74


解决方法:杀掉之前的registry进程重新启动registry。

jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_75

如何将本地文件Push到GitHub上???

  1. 方案1(这应该算是最简单的一种)
  2. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_76


  3. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_77


  4. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_78


  5. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_79


  6. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_80


  7. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_81


  8. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_82


  9. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_83


  10. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_84

  11. 方案2–>安装客户端Push
    a) 安装这两个软件
  12. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Docker_85

  13. b)进入项目所在目录,右键选择”Git Bash Here”
  14. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_86

  15. c)执行clone命令,生成一个名为microservice-mallmanagement的空文件夹
  16. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务_87

  17. d)将项目中其余文件拉至该文件夹中
  18. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_88

  19. e)执行命令添加文件
  20. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_89


  21. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_90

  22. f)推送到GitHub
  23. jenkins将服务打包成docker镜像 jenkins部署docker微服务_微服务整合及Jenkins的使用_91


  24. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_92

  25. g)登录验证
  26. jenkins将服务打包成docker镜像 jenkins部署docker微服务_Jenkins_93