-
一,本地仓库下载
-
二,构建一个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中的版本好做标记,回滚也是需要用上标记的版本号。如下图:
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关联!
这里指向脚本存放位置