博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jenkins + Docker + SpringCloud 微服务持续集成(一)
阅读量:4069 次
发布时间:2019-05-25

本文共 8372 字,大约阅读时间需要 27 分钟。

Jenkins + Docker + SpringCloud 微服务持续集成环境部署,docker 测试

本章内容不适合 初学者看,也看不懂

一、jenkins + Docker + SpringCloud CI\CD\CD 流程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ooGoJHji-1595544243066)(C:\Users\86156\Pictures\jenkins\高级\批注 2020-07-23 101033.png)]

流程简介:

  1. 开发人员将代码上传至 Gitlab仓库

  2. jenkins 从 Gitlab 中利用webhook拉取源码,编译打成 jar 包,然后构建成 docker 镜像,将镜像上传到 Harbor仓库。

  3. jenkins 发送 SSH 远程命令,让生产服务器到 Harbor 私有仓库拉取镜像到本地,然后创建容器。

  4. 最后,用户可以访问到容器。

二、Jenkins + Docker + SpringCloud 环境

服务器名称 IP地址 软件环境
代码服务器(GitLab) 192.168.168.12 git,python
持续集成服务器(jenkins) 192.168.168.13 maven+JDK+Docker
Docker仓库(Harbor) 192.168.168.14 Docker+Harbor
生产部署服务器(SpringCloud) 192.168.168.15 Docker+springcloud

JDK1.8

java development kit java 开发工具包[root@localhost ~]# tar -zxvf jdk-8u201-linux-x64.tar.gz -C /usr/src[root@localhost ~]# mv /usr/src/jdk1.8.0_201/  /usr/local/java [root@localhost ~]# echo 'export JAVA_HOME=/usr/local/javaexport JRE_HOME=/usr/local/java/jreexport CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/libexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin' >> /etc/profile[root@localhost ~]# rm -rf /usr/bin/java[root@localhost ~]# source /etc/profile[root@localhost ~]# java -versionjava version "1.8.0_201"Java(TM) SE Runtime Environment (build 1.8.0_201-b09)Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

maven

[root@localhost ~]# tar -zxvf apache-maven-3.6.0-bin.tar.gz -C /usr/src/[root@localhost ~]# mv /usr/src/apache-maven-3.6.0/  /usr/local/maven[root@localhost ~]# echo 'export PATH=$PATH:/usr/local/maven/bin' >> /etc/profile[root@localhost ~]# source /etc/profile[root@localhost ~]# mvn -vApache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)Maven home: /usr/local/mavenJava version: 1.8.0_201, vendor: Oracle Corporation, runtime: /usr/local/java/jreDefault locale: zh_CN, platform encoding: UTF-8OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"

Ⅰ、设置 GitLab 代码服务器

[root@gitlab ~]# yum -y install git[root@gitlab ~]# yum -y install policycoreutils-python [root@gitlab ~]# rpm -ivh gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm [root@gitlab ~]# vim /etc/gitlab/gitlab.rb---    external_url 'http://192.168.168.10'[root@gitlab ~]# gitlab-ctl reconfigure    [root@gitlab ~]# gitlab-ctl start

创建一个用户组:itheima_group

创建微服务项目(私有):tensquare_back

创建前端 web 项目(私有):tensquare_front

在这里插入图片描述
在这里插入图片描述

Ⅱ、设置 Harbor 企业级仓库

搭建 Harbor 需要 docker-compose:

docker

yum -y install yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fastyum -y install docker-cemkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'{  "registry-mirrors": ["https://m41udh8b.mirror.aliyuncs.com"]}EOF

Harbor

[root@habor ~]# tar zxvf harbor-offline-installer-v1.6.2.tgz -C /usr/local/[root@habor ~]# mv docker-compose  /usr/local/bin/[root@habor ~]# chmod +x /usr/local/bin/docker-compose [root@habor ~]# cd /usr/local/harbor/[root@harbor harbor]# vim harbor.cfg ---hostname = 192.168.168.14   	#修改成自己的本机IP地址[root@harborharbor]# ./install.sh

启动 harbor:docker-compose start

访问 harbor -web :192.168.168.14

创建私有项目"tensquare",创建并设置管理员用户

用户名:shm

密码:QQ1136265636.com

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F2bRXnOr-1595544243075)(C:\Users\86156\Pictures\jenkins\高级\批注 2020-07-23 185617.png)]

Ⅲ、设置 jenkins 服务器

JDK 1.8 ln -s /usr/local/java/bin/java /usr/bin

maven

[root@jenkins ~]# vim /usr/local/maven/conf/settings.xml---在 159 行 上添加以下内容:        
aliyun maven
aliyun
http://maven.aliyun.com/nexus/content/groups/public/
central

SonarQube7.8 + MySQL5.7.29

docker

[root@jenkins ~]# vim /etc/yum.repos.d/ali-docker.repo[ali.docker]name=mirrors.aliyun.com.dockerbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/enabled=1gpgcheck=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[root@jenkins ~]# yum -y install docker-ce[root@jenkins ~]# mkdir -p /etc/docker[root@jenkins ~]# tee /etc/docker/daemon.json <<-'EOF'{
"registry-mirrors": ["https://m41udh8b.mirror.aliyuncs.com"]}EOF[root@jenkins ~]# vim /usr/lib/systemd/system/docker.service --- ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 192.168.168.14[root@jenkins ~]# systemctl start docker && systemctl enable docker

连接 Harbor

docker pull hello-worlddocker tag hello-world:latest  192.168.168.14/tensquare/hello-world:v1docker login -u shm -p QQ1136265636.com 192.168.168.14docker push 192.168.168.14/tensquare/hello-world

Ⅳ、设置生产 docker 服务器

JDK + MAVEN

[root@tomcat ~]# java -versionjava version "1.8.0_201"Java(TM) SE Runtime Environment (build 1.8.0_201-b09)Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)[root@tomcat ~]# mvn -vApache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)Maven home: /usr/local/mavenJava version: 1.8.0_201, vendor: Oracle Corporation, runtime: /usr/local/java/jreDefault locale: zh_CN, platform encoding: UTF-8OS name: "linux", version: "3.10.0-1062.el7.x86_64", arch: "amd64", family: "unix"

docker

[root@docker ~]# vim /etc/yum.repos.d/ali-docker.repo[ali.docker]name=mirrors.aliyun.com.dockerbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/enabled=1gpgcheck=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[root@docker ~]# yum -y install docker-ce[root@docker ~]# mkdir -p /etc/docker[root@docker ~]# tee /etc/docker/daemon.json <<-'EOF'{
"registry-mirrors": ["https://m41udh8b.mirror.aliyuncs.com"]}EOF[root@docker ~]# vim /usr/lib/systemd/system/docker.service --- ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 192.168.168.14[root@docker ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf [root@docker ~]# sysctl -p[root@docker ~]# systemctl start docker && systemctl enable docker

连接 Harbor

docker login 192.168.168.14用户:shm密码:QQ1136265636.comdocker pull 192.168.168.14/tensquare/hello-world:v1

三、测试 整个 docker 持续集成 环境

测试 能否生成 docker 镜像,上传到 harbor 仓库,再下载到 docker 生产服务器。

1、spring cloud 设置 eureka注册中心,并生成 jar 包

安装一个测试用的 spring cloude

[root@jenkins ~]# yum -y install  git[root@jenkins ~]# yum makecache fast[root@jenkins ~]# git clone https://github.com/luojunyong/spring-cloud-examples.git

[root@jenkins src]# mv spring-cloud-examples/spring-cloud-eureka/   /usr/local/eureka[root@jenkins src]# cd /usr/local/eureka/spring-cloud-eureka1、#修改 eureka 注册中心配置文件[root@jenkins eureka]# vim src/main/resources/application.properties --- 修改成以下内容:spring.application.name=spring-cloud-eureka	#名字server.port=8000				#端口eureka.client.register-with-eureka=true		#当前应用是否要进行注册至注册中心eureka.client.fetch-registry=true		#当前应用是否从注册中心获取信息eureka.client.serviceUrl.defaultZone=http://192.168.168.13:8000/eureka/#本机IP地址和端口号2、#编译打包,生成 jar 包。[root@node1 spring-cloud-eureka]# mvn clean package[root@jenkins spring-cloud-eureka]# ls target/---spring-cloud-eureka-0.0.1-SNAPSHOT.jar

2、用 dockerfile 将 jar包 生成镜像

[root@jenkins target]# mkdir /dockerfile

[root@jenkins target]# cp spring-cloud-eureka-0.0.1-SNAPSHOT.jar /dockerfile/

制作 jar 包的 dockerfile文件

FROM openjdk:8-jdk-alpineARG JAR_FILECOPY ${
JAR_FILE} eureka.jarEXPOSE 8000ENTRYPOINT ["java","-jar","/eureka.jar"]

构建镜像的同时,为 JAR_FILE 赋值:

[root@jenkins dockerfile]# docker build --build-arg JAR_FILE=spring-cloud-eureka-0.0.1-SNAPSHOT.jar -t eureka:v1 .

docker build: 构建--build-arg:赋值JAR_FILE:引用变量=变量值(eureka的 jar包)-t :指定构建镜像的版本(tag标签) eureka:v1 .  :在当前目录下构建

查看本地仓库:docker images

运行此镜像:docker run -itd -p 8000:8000 eureka:v1

查看容器日志,通过 容器ID :docker logs -f ID号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XLS5LAG9-1595544243077)(C:\Users\86156\Pictures\jenkins\高级\批注 2020-07-23 195748.png)]

3、推送 Harbor 仓库

①、给镜像打上标签

docker tag eureka:v1 192.168.168.14/tensquare/eureka:v1

②、推送镜像

docker login -u 用户名 -p 密码 192.168.168.14:85 先登录 Harbor

docker push 192.168.168.14/tensquare/eureka:v1

4、docker 生产服务器从 Harbor 下载

docker login -u 用户名 -p 密码 192.168.168.14:85 先登录 Harbor

docker pull 192.168.168.14/tensquare/eureka:v1

5、测试 gitlab - jenkins 拉取代码

这一步可以不做,没什么意义

gitlab

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iW7sNF7J-1595544243078)(C:\Users\86156\Pictures\jenkins\4\批注 2020-07-22 093452.png)]

pipeline - SCM - Jenkinsfile

pipeline {    agent any          stages {        			//项目构建        stage('pull code') {    	//拉取代码             steps {             	//具体实施步骤                checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '218fb747-c605-4fa0-80d3-c322cd42d7a9', url: 'git@192.168.168.12:itheima_group/test.git']]])            }        }    }}

在这里插入图片描述

生产环境 完整持续化集成步骤

Pipeline 流水线:

GitLab

  1. 项目上传到 Gitlab

jenkins集成步骤

  1. 从 Gitlab拉取项目源代码
  2. 提交到 SonarQube 代码审查
  3. 生成 jar包
  4. 使用 Dockerfile 将 jar 包制作成镜像
  5. 上传到 Harbor 仓库

部署上线步骤

  1. 生产服务器拉取镜像和发布应用
  2. 部署前端服务

转载地址:http://gyrji.baihongyu.com/

你可能感兴趣的文章
swiper插件的的使用
查看>>
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb在java中的应用
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力科技行业创高峰
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>