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,原 ...
随机推荐
- 让UltraEdit成为java编译器
1. ? 配置命令: 选择[高级]->[工具栏配置] ? 选择插入按钮进行命令添加: ? 依次填写命令内容: 解释:菜单项目名称:命令的名字,建议使 ...
- spring-java项目中连接redis数据库
最近由于项目需要,要从redis数据库中查询一些数据,还没有了解过redis,只好硬着头皮上阵,记录一下连接过程: 1.需要导入两个jar包:jedis.jar,spring-data-redis.j ...
- 理解Annotation
一.概念 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类.方法.成员变量等)进行关 ...
- jQuery提示parsererror错误解决办法
jquery来处理ajax,用到了json.但是很诧异,jquery的ajax回调时一直调用了error函数(一直提示parsererror异常),success函数一次没执行过 $.ajax({ t ...
- CAN总线基础知识(二)
CAN协议和标准规范 1 由ISO标准化的CAN协议 CAN协议已经由ISO标准化,有2个版本,如ISO11898和ISO11519-2,它们之间在数据链路层没什么不同,但是在物理层有些区别. (1) ...
- 错误代码: 1305 PROCEDURE world.insert_data does not exist
1.错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:call insert_data() 错误代码: 1305 PROCEDUR ...
- 你的变量究竟存储在什么地方 && 全局内存
我相信大家都有过这样的经历,在面试过程中,考官通常会给你一道题目,然后问你某个变量存储在什么地方,在内存中是如何存储的等等一系列问题.不仅仅是在面试中,学校里面的考试也会碰到同样的问题. 如果你还不 ...
- iOS - MySQL 的安装配置
前言 提前下载好相关软件,且安装目录最好安装在全英文路径下.如果路径有中文名,那么可能会出现一些莫名其妙的问题. 提前准备好的软件: mysql-5.7.17-macos10.12-x86_64.dm ...
- oracle的下载地址以及步骤
一.下载地址 1.oracle官网:https://www.oracle.com/cn/index.html 2. 点击右上角先选择语音,然后注册一个新账户,如果有oracle直接登录就可以 3.点击 ...
- javascript右键菜单分析
右键菜单 思路 1.遮蔽原来的默认右键菜单 2.新建右键菜单跟随鼠标移动 3.注意边界处的位置变化 4.自定义右键内容的具体效果 具体 这样的事件涉及到有关contextmenu事件,阻止默认事件,获 ...