在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署、交付(CD)。

持续集成(CI)表示由开发对项目代码进行确认修改并推送到git,svn,ftp等应用的持续更新发版操作。

持续部署(CD)表示根据jenkins在应用中拉取的代码可以对目标服务器进行持续部署到任何环境下。

将代码更新后,提交到指定的存储库中,如git,svn以及ftp等应用中,再由运维通过jenkins拉取存储在应用中的项目代码,打包成war包的形式部署到对应的测试环境以及生产环境中。docker的参与就在于,通过执行shell语句拉取远程镜像仓库的镜像,以及git,svn,ftp中的项目代码,在本地docker环境下,通过Dockerfile的形式再改远程镜像中构建出一套存在项目代码的新的基础镜像,并将镜像上传到远程registry中,再通过jenkins中ssh协议对想要部署的docker主机进行镜像拉取,容器创建等远程部署操作,这样服务就能正常运行了。


工作流程:

  1. 开发人员提交代码到Git版本仓库;

  2. Jenkins人工/定时触发项目构建;

  3. Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;

  4. Jenkins在Docker主机创建容器并发布。

环境规划如下:

node-1:192.168.175.128 jenkins/docker

node-2:192.168.175.130 docker/部署主机

node-3:192.168.175.131 git/registry 仓库

1.部署Git仓库

主机node-3

1.安装git

#yum install -y git

2.创建git用户、

#useradd git

#passwd git

3.以git用户的身份在其家目录下创建git仓库

#su - git

~]mkdir solo.git  //该仓库绝对路径为/home/git/solo.git

4.尝试拉取远程git仓库中的代码

#git clone git@192.168.175.131:/home/git/solo.git

2.部署私人registry

主机 node-3

1.安装docker

# yum install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm  -y
  # yum install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm  -y

2.启动docker

# systemctl start docker && systemctl enable docker

3.创建registry,并在后台运行

# docker pull registry

# docker run -itd --name registry -p 5000:5000 --restart=always registry

3.部署jenkins

  1.安装jdk,maven

# tar -xf  jdk-8u181-linux-x64.tar.gz -C /usr/local

# mv /usr/local/jdk-8u181-linux-x64 /usr/local/jdk1.8

# tar -xf apache-maven-3.5.0-bin.tar.gz -C /usr/local

# mv /usr/local/apache-maven-3.5.0-bin /usr/local/maven

# cat > /etc/profile.d/java.sh << EOF

export JAVA_HOME=/usr/local/jdk1.8
       export MAVEN_HOME=/usr/local/maven
       export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

EOF

# source /etc/profile.d/java.sh

2.安装tomcat环境(源码安装)

# tar -xf apache-tomcat-8.5.33.tar.gz -C /usr/local

# mv /usr/local/apache-tomcat-8.5.33 /usr/local/tomcat

3.导入jenkins的war包

https://jenkins.io/download/

如图点击下载最后一个Generic Java package(war):

# rm -rf /usr/local/tomcat/webapps/ROOT/*

# unzip jenkins -d /usr/local/tomcat/webapps/ROOT/

# cd /usr/local/tomcat/bin

# ./startup //启动tomcat

安装的jenkins默认家目录在/root/.jenkins

浏览器访问:http://192.168.175.128:8080

输入密码,进行初始化

选择右边的选择安装引擎

为了保证jenkins主机能够在docker主机远程执行shell脚本,能够对git仓库进行代码拉取

让jenkins主机能够无密登录130,以及131两台机器

192.168.175.128下执行

# ssh-keygen -t rsa

# ssh-copy-id -i /root/.ssh/id_rsa.pud root@192.168.175.130

# ssh-copy-id -i /root/.ssh/id_rsa.pud git@192.168.175.131

4.导入代码到git仓库

# git clone https://github.com/b3log/solo
    # cd solo
    移除旧的推送地址,添加新的:
    # git remote remove origin
    # git remote add origin git@192.168.0.219:/home/git/solo.git  
    提交代码到Git仓库并创建tag:
    # touch src/main/webapp/a.html
    # git add .
    # git commit -m “a”
    创建标签:
    # git tag 1.0.0
    推送到Git服务器:
    # git push origin 1.0.0

5.创建Tomcat基础镜像并导入registry

1.tomcat Dockerfile

[root@node-3 ~]# cat docker/tomcat/Dockerfile2
    FROM centos:7
    MAINTAINER   wjq

RUN yum install unzip iproute -y

ENV JAVA_HOME /usr/local/jdk

ADD apache-tomcat-8.0.46.tar.gz /usr/local
    RUN mv /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat

WORKDIR /usr/local/tomcat
    EXPOSE 8080
    ENTRYPOINT ["./bin/catalina.sh", "run"]

2.创建镜像

# docker build -t 192.168.175.128:5000/tomcat-9 -f Dockerfile2 .

3.上传到私有镜像仓库

# docker push 192.168.175.128:5000/tomcat-9

6.jenkins配置定义

1.系统管理 --> 凭据

配置远程docker主机的身份,让jenkins能够在该docker主机上进行镜像拉取,容器构建操作,可以使用密钥,密码的方式

2.系统管理 --> 系统设置 配置远程主机信息,主机IP,使用的凭据,访问端口

3.系统管理 --> 全局工具设置 设置jdk,maven,git的全局配置,如路径,名称

4.系统管理 --> 管理插件 安装插件SSH,Git Parameter,Maven Integration plugin

5.创建Maven项目,进行配置

设置在git仓库拉取代码,需要设置无密连接

在本地jenkins执行shell命令,并在远程docker操作主机将封装好的镜像拉渠道docker主机,删除之前部署过的镜像和容器,并启动封装了最新代码的镜像容器

进行部署

1.保存配置

2.Build with Parameters:根据Tag选择版本号

3.进入控制台查看输出

4.访问博客

转载于:https://blog.51cto.com/12480612/2176720

CentOS7.3下Jenkins+docker自动化部署solo站点相关推荐

  1. linux下jenkins实现自动化部署(超详细)

    本文参照:https://blog.csdn.net/achuDk/article/details/78925081 但是有给出我在搭建中遇到的问题,和我解决的方法.现在我的配置是需要手动一键点击部署 ...

  2. Jenkins+Docker自动化部署项目

    看到了一篇文章,实操一下自动部署的感觉.参看地址:原文 首先更新docker,我更新到了 [root@localhost springboot]# docker --version Docker ve ...

  3. Docker 方式部署 Solo 博客系统总结

      此篇为Docker部署方式,另有Tomcat部署方式,请参考文章<Tomcat 方式部署 Solo 博客系统总结>   最近搭建了一个博客系统,作为自己的主页,方便记录一些平时所见所闻 ...

  4. springboot 使用Jenkins实现自动化部署

    springboot 使用Jenkins实现自动化部署 简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持 ...

  5. 区块链 Hyperledger - 超级账本项目在centos7环境下的安装与部署

    Hyperledger - 超级账本项目在centos7环境下的安装与部署 Hyperledger 项目是开源界面向开放.标准区块链技术的首个重要探索,在 Linux 基金会的支持下,吸引了众多科技和 ...

  6. 本机装载VirtualBox+CentOS7环境下安装Docker

    本机装载VirtualBox+CentOS7环境下安装Docker 一.环境准备 VirtualBox安装 官网下载对应的安装包安装 镜像下载 下载 CentOS7的镜像 二.基础步骤及设置 2.1新 ...

  7. gitlab与jenkins的自动化部署(通过webhook与ansible)

    gitlab与jenkins的自动化部署(通过webhook与ansilble) 1.部署介绍 gitlab服务器:192.168.1.49:80 jenkins服务器:192.168.1.49:81 ...

  8. Linux下使用docker安装部署Sonar Qube

    文章目录 Linux下使用docker安装部署Sonar Qube 一.环境准备 二.部署步骤 三.使用 四.结束 Linux下使用docker安装部署Sonar Qube 一.环境准备 本文默认会使 ...

  9. 基于Docker、Jenkins实现自动化部署

    概述 最近在写一个基于SpringBoot的小项目,由于每次部署到服务器都需要经历几个繁琐的过程,随在自己的服务器上安装了Jenkins和Docker实现自动化部署.至此,将整个过程记录如下. 安装与 ...

最新文章

  1. 从头开始学习深度学习之卷积
  2. 组件生命周期管理和通信方案
  3. CodeForces - 594A Warrior and Archer(思维+博弈)
  4. ZOJ 3720 Magnet Darts (计算几何,概率,判点是否在多边形内)
  5. 关于hexo与github使用过程中的问题与笔记
  6. 扩展源_瑞萨电子推出具备反向充电WattShare TRx模式的 15W无线充电电源P9415R接收器,扩展无线电源产品线...
  7. java 陷阱,java 中的陷阱。
  8. HTML轮播图全宽,jq全兼容自适应宽度图片轮播(新手适用)
  9. Oracle 10gR2 Psu 相关
  10. css html 语法,CSS基础语法
  11. java设计思想和设计模式,快来收藏!
  12. 程序猿 网站 | 常用 技术学习网站
  13. 身份证归属地查询免费api接口代码
  14. 我手机中舍不得删除的43条搞笑短信
  15. CSS+SVG实现简单的点赞效果
  16. 2007山东公务员面试真题汇总
  17. Java闲杂笔记摘抄
  18. 最新在线客服系统源码软件代码+自动回复+管理后台
  19. python 画蜘蛛_R绘图 vs Python绘图(散点图、折线图、直方图、条形图、箱线图、饼图、热力图、蜘蛛图)...
  20. 计算机视觉与深度学习(1)

热门文章

  1. easyui table 数据表筛选条件
  2. 景安河南机房电力事故,部分主机和云服务器停机
  3. CFString​Transform
  4. ORA-12919: Can not drop the default permanent tablespace
  5. Linux内核源代码情景分析-fork()
  6. Repeater 嵌套 绑定数据,嵌套的Repeater无法绑定的问题
  7. DOM渲染的详细过程
  8. 从无到有-在create-react-app基础上接入react-router、redux-saga
  9. 记一次阿里云日志服务配置
  10. oracle系列(三)oracle的配置与管理