1. 思路&流程

Jenkins集成Docker镜像实现自动发布与Jenkins发布mavne项目思路一样总体流程 为:
Jenkins 拉去远端源码 —— gitl
实现应用打包 —— jenkins本地
把应用程序打包进Docker镜像 —— Dockerfile
镜像上传到Docker私有仓库 —— shell或者 Docker相关的Jekins插件
删除老的Docker容器,运行新的Docker容器 —— shell脚本

2. 环境准备

Jenkins java maven Docker git git-Jenkins插件
配置Jenkins
Git仓库可以开启钩子功能实现push代码后自动触发Jenkins构建功能,如需要可以在git仓库中开启此功能。
新建项目 选择mavan风格项目或者自由风格项目(这里使用自由风格)

3. 配置Jenkins构建触发器

说明1:触发远程构建 (例如,使用脚本)
这个选项就是上面提到配合git仓库的钩子功能实现代码PUSH后Jenkins收到通知自动触发构建项目的动作
说明2:Poll SCM日程表
定时检查源码变更,如果有更新就克隆下最新code下来,然后执行构建动作

 每5分钟检查一次该项目分支是否有变动,如果有就拉去最新code执行构建动作
注:构建触发器这里我们不做任何选择,这里只是介绍这两周功能,如有需要自行实现。

4. 构建日志输出

查看docker本地仓库

镜像已经存在

容器已经在运行了

项目中的Dockerfile

Git仓库的项目当中需要存放Dockerfie文件,用于打包应用到镜像里面

5. Dockerfile内容如下:

为了避免构建过程过多时间执行过长,Dockerfile文件只做了一件事就是把Jenkins打包好的应用文件添加进容器里。其他所需的环境和操作都将在基础镜像上完成,提高构建效率。
注:这里的 FROM java6是需要存在在Docker本地仓库上的镜像,如果不存在Jekins在执行构建过程中回去Docker Hub上拉取对应镜像,如果没有则会报错。

6.基础镜像 Dockerfile

Java6的镜像是从这里由来,添加了tomcat以及JAVA环境变量
构建Docker镜像这里只做一下简单说明

Jenkins构建后操作
Jekins可以使用相关的Docker插件来实现此功能,但由于外网被墙安装困难,这里采用Execute Shell方式实现,也比较简单易于后期维护。

imagesid=`docker images|grep -i docker-test|awk '{print $3}'`
project=/root/.jenkins/workspace/Docker if ! -n "$imagesid";then
echo $imagesid "is null"
else
docker rmi $imagesid -f
fi
cd $project docker build -t docker-test . if docker ps -a|grep -i docker;then
docker rm -f docker
fi docker run -it -d -p 8099:8080 --name docker docker-test

注:这里的杀掉老的容器和删除旧的容器 grep的都是通过容器的名称所匹配的,所以再启动启动容器的时候要指定容器名称 –name,否则就是启动失败。

7. 页面访问验证

我Docker镜像里的应用就是一个index页面,容器访问成功。

8. 扩展

- 多节点升级

以上只是针对单节点本机Docker的打包部署方式,如需要多借点部署,不用多次编译构建,只需执行一次构建操作,把镜像上传到企业内部私有仓库,通过ansibles 实现多节点部署。

- Docker集群环境的部署方式

使用kubernets集群管理工具通过Deployment(1.2版本新增)文件实现滚动升级容器(等同于应用的部署)

Jenkins集成Docker镜像实现自动发布的更多相关文章

  1. jenkins自动打包生成docker镜像后自动发布并nginx代理访问

    之前曾写过docker及jenkins基础使用  https://www.cnblogs.com/xiaochangwei/category/816943.html 现在搭建环境的功能为: 1.jen ...

  2. jenkins构建docker镜像上传到harbor并发布到kubernetes

    很早之前写过一篇jenkins集成docker的文章,使用的是CloudBees Docker Build and Publish plugin插件.这篇文章是直接使用shell脚本做的,主要是这次有 ...

  3. Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布

    环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...

  4. Docker:使用Jenkins构建Docker镜像

    Docker  彭东稳  1年前 (2016-12-27)  10709次浏览  已收录  0个评论 一.介绍Jenkins Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从 ...

  5. Jenkins打Docker镜像推送到私有仓库

    Jenkins打Docker镜像推送到私有仓库 因为我的Jenkins是安装在群晖NAS中的docker,所以我这边就以Docker安装Jenkins为例 echo '================ ...

  6. 使用jenkins 实现 .net core项目自动发布到 docker

    在Docker内运行Jenkins pull镜像  docker pull jenkins/jenkins:lts Dockerfile FROM jenkins/jenkins:lts USER r ...

  7. 方法1:使用Jenkins构建Docker镜像 --SpringCloud

    前提意义: SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像 ...

  8. 方法2:使用Jenkins构建Docker镜像 --SpringCloud

    前提意义: SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像 ...

  9. Jenkins集成Docker实现镜像构建和线上发布

    原文地址:http://www.cnblogs.com/keithtt/p/6410229.html 大概过程如下图: 由于需要用到docker打包镜像,jenkins宿主机上需要安装docker,原 ...

随机推荐

  1. 吐槽版︱MRO-Microsoft R Open快捷键+界面识别+功能设置

    下载了之后,发现连运行(RUN键)在哪都不知道,蒙逼的在哪倒弄半天,都执行不了...问了别人,都说"ctrl+enter",但是我的电脑执行不了,于是今天就狠狠的一个一个按钮的点一 ...

  2. spring schedule定时任务(一):注解的方式

    我所知道的java定时任务的几种常用方式: 1.spring schedule注解的方式: 2.spring schedule配置文件的方式: 3.java类继承TimerTask: 第一种方式的实现 ...

  3. bootstrap 幻灯大图结合dedecms的autoindex

    <div class="container" id="banner"> <div id="carousel-example-gene ...

  4. FusionCharts ID重复

    1.今天在做项目时,有关FusionCharts柱状图的,调试的过程中,我发现IE浏览器出现FusionCharts ID重复. 具体的消息如下: 消息:#25081843:IECompatibili ...

  5. 使用VLC和live555MediaServer搭建RTSP服务器

    一.使用VLC搭建 服务端 1.打开"媒体--流"选项,如图所示:  2.点击"添加"按钮选择流媒体文件,然后点击"串流"按钮  3.点击& ...

  6. IOS开发之XCode学习012:Slider和ProgressView

    此文学习来源为:http://study.163.com/course/introduction/1002858003.htm 此工程文件实现功能:  1.定义UISlider和UIProgressV ...

  7. 关于json.parse和json.stringify的区别

    json.parse是将字符串解析成json格式 而json.stringify是将json解析成字符串格式

  8. .Net利用Newtonsoft进行解析Json的快捷方法

    现在异构系统之间的数据交换多采用Json格式 .Net如何快捷地解析Json和将Object转换成json呢? 1.利用Newtonsoft解析Json字符串 在百度上查找资料,利用Newtonsof ...

  9. poj3268(置换矩阵思想)

    题意:一群牛分别从1~n号农场赶往x号农场参加聚会,农场与农场之间的路时单向的,在n个农场之间有m条路,给出 a ,b , t表示从a号农场到b号农场需要t时间. 每头牛都会选择最短的路,问来回路上( ...

  10. 安装Apache Maven

    Apache Maven的安装是一个简单的过程:解压提取文件,将解压后的bin目录,配置到系统环境变量PATH中,以便于系统各目录下使用shell,都可以操作mvn command. 详细步骤: 1. ...