jenkins+gitlab+docker快速部署发布回滚示例

释放双眼,带上耳机,听听看~!
  • 一,本地仓库下载

  • 二,构建一个docker的nginx镜像

  • 三,jenkins构建


本章简单介绍docker+jenkins+gitlab发布和回滚,加入了docker,加入docker后,发布和回滚变得将是很简单,容器本身一次构建后,存放在docker仓库中,回滚只需要拉取仓库的镜像后直接run起来即可,回滚也是如此,而且他的备份可以直接打包成tar.gz压缩包,解压到其他机器,部署docker应用后,即可恢复。

一,本地仓库下载

1.1,参考本站中docker本地仓库搭建,链接:Docker本地仓库简单使用
1.2,安装
docker run -d -p 5000:5000 registry
这时候可以看到运行了两个容器


1
2
3
4
5
6
1[root@linuxea-com ~]# docker ps -a
2CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
3ebe95cb71671        registry            "/entrypoint.sh /etc/"   2 minutes ago       Up 2 minutes        0.0.0.0:5000->5000/tcp   tender_wright
4ca797ad15342        centos              "bash"                   20 hours ago        Up 20 hours                                  test
5[root@linuxea-com ~]#
6

二,构建一个docker的nginx镜像

首先,构建一个nginx基础镜像, 只需要将日志放出来即可。
当构建完成后,在编写一个Dockerfile,在本地通过git pull拉取代码到,COPY将本地代码复制到容器中后,build镜像并且push到本地仓库,此时。便可以使用远端docker pull拉取。其中每次构建会拿git reflog中的版本好做标记,回滚也是需要用上标记的版本号。如下图:
jenkins+gitlab+docker快速部署发布回滚示例
docker基础镜像Dockfile和代码构建的Dockfile,在github上存储,直接可以拿来使用


1
2
3
4
5
6
7
8
9
10
11
12
13
14
1#!/bin/bash
2#########################################################################
3# File Name: jc.sh:wq
4# Author: www.linuxea.com
5# Email: usertzc@gmail.com
6# Version:
7# Created Time: 2016年12月31日 星期六 16时15分16秒
8#########################################################################
9wwwp=/wwwroot/docker
10mkdir -p $wwwp
11curl -Lks4 https://raw.githubusercontent.com/LinuxEA-Mark/jenkins_gitlab/master/Dockerfile -o  $wwwp/Dockerfile
12cd $wwwp && docker build -t nginx . && rm -rf Dockerfile
13culr -Lks4 https://raw.githubusercontent.com/LinuxEA-Mark/jenkins_gitlab/master/jenkins/Dockerfile -o $wwwp/Dockerfile
14

我们下载一个脚本


1
2
3
4
1[root@linuxea-com ~]# curl -Lks4 https://raw.githubusercontent.com/LinuxEA-Mark/jenkins_gitlab_Docker/master/docker_fabu.sh -o /wwwroot/docker/docker_fabu.sh
2[root@linuxea-com ~]# chmod +x /wwwroot/docker/docker_fabu.sh
3[root@linuxea-com ~]# chown jenkins.jenkins /wwwroot/docker/docker_fabu.sh
4

脚本最终是由jenkins运行,需要在visudo中注释掉Defaults requiretty,添加jenkins的命令权限,如下:


1
2
3
1[root@linuxea-com ~]#  sed -i '/requiretty /s/^/#&/' /etc/visudoer
2[root@linuxea-com ~]#  echo  jenkins ALL = (root)NOPASSWD:/usr/bin/docker,(root)NOPASSWD:/usr/local/bin/docker-compose,(root)NOPASSWD:/bin/rm,(root)NOPASSWD:/bin/cp,(ALL)NOPASSWD:/usr/bin/git >>  /etc/visudoer
3

在wwwroot目录下,克隆一次代码


1
2
3
4
5
6
7
1[root@linuxea-com /wwwroot]# git clone git@10.0.1.61:root/docker_test.git
2正克隆到 'docker_test'...
3remote: Counting objects: 6, done.
4remote: Compressing objects: 100% (3/3), done.
5remote: Total 6 (delta 0), reused 0 (delta 0)
6接收对象中: 100% (6/6), done.
7

三,jenkins构建

和之前的几乎一样,创建自由风格,细节可参考git+jenkins发布和回滚示例
jenkins+gitlab+docker快速部署发布回滚示例
将jenkins和gitlab关联!
jenkins+gitlab+docker快速部署发布回滚示例
这里指向脚本存放位置
jenkins+gitlab+docker快速部署发布回滚示例

给TA打赏
共{{data.count}}人
人已打赏
安全经验

职场中的那些话那些事

2021-9-24 20:41:29

安全经验

java高并发(九)线程封闭

2021-11-28 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索