Jenkins集成Docker镜像实现自动发布
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镜像实现自动发布的更多相关文章
- jenkins自动打包生成docker镜像后自动发布并nginx代理访问
之前曾写过docker及jenkins基础使用 https://www.cnblogs.com/xiaochangwei/category/816943.html 现在搭建环境的功能为: 1.jen ...
- jenkins构建docker镜像上传到harbor并发布到kubernetes
很早之前写过一篇jenkins集成docker的文章,使用的是CloudBees Docker Build and Publish plugin插件.这篇文章是直接使用shell脚本做的,主要是这次有 ...
- Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...
- Docker:使用Jenkins构建Docker镜像
Docker 彭东稳 1年前 (2016-12-27) 10709次浏览 已收录 0个评论 一.介绍Jenkins Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从 ...
- Jenkins打Docker镜像推送到私有仓库
Jenkins打Docker镜像推送到私有仓库 因为我的Jenkins是安装在群晖NAS中的docker,所以我这边就以Docker安装Jenkins为例 echo '================ ...
- 使用jenkins 实现 .net core项目自动发布到 docker
在Docker内运行Jenkins pull镜像 docker pull jenkins/jenkins:lts Dockerfile FROM jenkins/jenkins:lts USER r ...
- 方法1:使用Jenkins构建Docker镜像 --SpringCloud
前提意义: SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像 ...
- 方法2:使用Jenkins构建Docker镜像 --SpringCloud
前提意义: SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像 ...
- Jenkins集成Docker实现镜像构建和线上发布
原文地址:http://www.cnblogs.com/keithtt/p/6410229.html 大概过程如下图: 由于需要用到docker打包镜像,jenkins宿主机上需要安装docker,原 ...
随机推荐
- Android的ListView异步加载图片时,错位、重复、闪烁问题的分析及解决方法
Android ListView异步加载图片错位.重复.闪烁分析以及解决方案,具体问题分析以及解决方案请看下文. 我们在使用ListView异步加载图片的时候,在快速滑动或者网络不好的情况下,会出现图 ...
- Android Scheme协议与应用全解析
URL Scheme 的作用 客户端应用可以向操作系统注册一个 URL Scheme,该 Scheme 用于从浏览器或其他应用中启动本应用. 通过指定的 URL 字段,可以让应用在被调起后直接打开某些 ...
- windows 7蓝屏解决办法
1.通过工具打开出现蓝屏原因的dmp文件,找到原因 Unable to load image \SystemRoot\system32\ntkrnlpa.exe, Win32 error 0n2 2. ...
- CAN总线基础知识(一)
1.CAN总线是什么? CAN(Controller Area Network)是ISO国际标准化的串行通信协议.广泛应用于汽车.船舶等.具有已经被大家认可的高性能和可靠性. CAN控制器通过组成总线 ...
- linux下的APK反编译软件及过程介绍 .
需要工具: 1.apktool apk打包工具 下载地址:http://android-apktool.googlecode.com/files/apktool1.5.2.tar.bz2 安装:直接解 ...
- “net usershare”返回错误 255
1 错误描述 youhaidong@youhaidong:~$ sudo nautilus (nautilus:4429): Gtk-WARNING **: Failed to register cl ...
- px单位html5响应式方案
移动端h5响应式方案最近这几年用得最多的最多的就是rem方案了.这个需要计算根元素的font-size来实现响应式. 但这种方案也有一个缺点,那就是font-size不为整数的时候一些字体使用rem单 ...
- 小实验3:实现haproxy的增、删、查
# Author:Alano # -*- conding:utf-8 -*- # 这里有一个问题:为什么手动删除了haproxy_new中的内容,但是执行添加命令的时候依然显示数据已经存在? f = ...
- ASP.NET Core轻松入门之Configure中IHostingEnvironment和IApplicationLifetime的使用
在StratUp.cs的Configure方法中,除了 常用的参数除了IApplicationBuilder和在我上一篇文章中提到的Iconfiguration点击打开链接 外 还有 IHostin ...
- halcon 模板匹配(最简单)
模板匹配是机器视觉工业现场中较为常用的一种方法,常用于定位,就是通过算法,在新的图像中找到模板图像的位置.例如以下两个图像. 这种模板匹配是最基本的模板匹配.其特点只是存在平移旋转,不存在尺度变化 ...