设为首页 收藏本站
云服务器等爆品抢先购,低至4.2元/月
查看: 4844|回复: 3

[经验分享] Jenkins+docker实现应用发布

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-14 09:26:50 | 显示全部楼层 |阅读模式
Jenkins+docker实现应用发布
Jenkins:centos6.5 ip:192.168.83.84
Docker:centos7.2 ip:192.168.83.60

一、安装Jenkins
最新版:
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo yum install jenkins

稳定版
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
sudo yum install jenkins

根据需求在jenkins的服务器上(centos)执行其中一种命令,安装jenkins。
另:jenkins依赖java环境,需先安装好java

启动jenkins:
Service Jenkins start

二、安装jenkins插件
成功启动jenkins后,在浏览器中输入192.168.83.84:8080访问配置jenkins,根据提示找到密码并输入,选择默认插件自动安装。安装好了以后会提示创建第一个admin 用户,创建成功后进入jenkins界面。

选择系统管理—>插件管理—>可选插件
在右侧filter框中输入Docker plugin,找到Docker plugin后直接安装

安装完成后在系统管理à系统设置的最后可以找到新增一个云的选项

三、docker服务器配置
安装docker:sudo yum install docker

以前台方式启动docker:docker -d -H unix:///var/run/docker.sock -H 0.0.0.0:4243

从dockerhub下一个新的centos镜像
docker pull centos:latest

构建基于docker的tomcat镜像
cd
mkdir docker
cd docker
传输
wKiom1eF-UCgwLUBAAAM72MXnfw961.jpg
到该目录并解压

vim build.df
FROM centos:latest
MAINTAINER akjfit

#install jdk
ADD jdk1.8.0_91/opt/jdk1.8.0_91
ENV JAVA_HOME/opt/jdk1.8.0_91
ENV PATH$PATH:$JAVA_HOME/bin
RUN mkdir -p"$JAVA_HOME"

#install tomcat
ADDapache-tomcat-9.0.0.M4 /opt/apache-tomcat-9.0.0.M4
ENV CATALINA_HOME/opt/apache-tomcat-9.0.0.M4
ENV PATH$CATALINA_HOME/bin:$PATH
ENV JAVA_OPTS -Xmx512m-Duser.timezone=GMT+08
RUN mkdir -p"$CATALINA_HOME"
WORKDIR $CATALINA_HOME

ENV LANG en_US.UTF-8

RUN cp/usr/share/zoneinfo/Asia/Shanghai /etc/localtime

EXPOSE 8080

docker build -t centos:tomcat -f build.df/root/docker

四、配置docker云

登录jenkins的web管理端

点击系统管理-->系统设置
wKioL1eF-UCgleZeAAASisHBmZQ644.jpg
wKioL1eF-UGy25ZMAABnZbiusYo972.jpg
Name:docker云的名字,要唯一,等下有用
Docker URL:Docker服务器的地址和端口
其他参数可如图配置,连接测试成功后会显示docker的版本号

wKiom1eF-UGxToFZAAATzfgQvbM097.jpg
添加temple并配置

wKioL1eF-UKyG3yNAACAYhlHr88287.jpg
wKiom1eF-ULRrV_lAACH-XqBOQE535.jpg
wKioL1eF-UPiy3PLAACQ2e1khx8070.jpg
需要配置的项:
Docker Image:当前docker云里存在的,需要用到的dockerimage的名字
Docker Command:启动该docker时执行的命令
Volumes:将docker container内部的目录挂载至宿主机的目录
Port bindings:将docker container内部的端口映射至宿主机
Memory Limit in MB:限制dockercontainer的内存大小
Credentials:配置管理认证


点击新建(maven项目)
wKiom1eF-USx68I6AACYhWmqOIA987.jpg

wKiom1eF-UWhl8omAAByVWetAoE221.jpg
wKioL1eF-UXBxYP6AAAtFultHvA435.jpg

选中docker container
在Label Expression中填写master(即由master来执行该job)


wKiom1eF-UaTuk-qAACXdR1320s879.jpg
在源码管理中选中git
Repository URL:需要打成war包的代码的位置
Credentials:输入可以登录git服务器的用户密码

wKioL1eF-Uaz6HRiAACBhSZsYSs430.jpg
勾选Build whenever a SNAPSHOT dependency is built(如果项目有依赖关系)

wKioL1eF-UeSsDMqAAAzU7VeDW0261.jpg
按照上图填写相关信息

wKioL1eF-UeglnIWAACDwK8YVAU910.jpg
在docker宿主机上部署2个脚本,stop.sh为判断当前项目的docker容器是否在运行,在运行就stop掉并删除该容器
deploy.sh为删除之前发布的包,并发布新生成的包

在jenkins主机上部署1个脚本,scp.sh为将在jenkins 主机上生成的war包传递到docker宿主机上

Action to choose:选择Provsion&StartContainer
Docker Cloud name:在系统设置中配置的唯一的docker云名
Template ID:该docker云下要使用的镜像名

点击应用保存

五、相关脚本
scp脚本:
#/bin/bash

if [ -e /opt/.jenkins/workspace/$1-master/$1-core/pom.xml];then
scp/opt/.jenkins/workspace/$1-master/$1-core/target/*.war 192.168.83.60:/tmp/$1

else

scp/opt/.jenkins/workspace/$1-master/target/*.war 192.168.83.60:/tmp/$1
#sleep 20
fi

stop脚本
#/bin/bash

id=`dockerps -a |grep 0:$1 |awk '{print $1}'`
if [ -n"$id" ];
then
dockerstop $id
docker rm$id
else
echo"no running docker container"
fi

deploy脚本:
#!/bin/bash

cd/workspace/$1-master
rm -rfROOT
cp/tmp/$1/$2.war /workspace/$1-master
unzip$2.war -d ROOT >/dev/null
rm -f$2.war
rm -rf/workspace/$1-master/ROOT/profiles


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-243849-1-1.html 上篇帖子: Jenkins如何将构建生成包上传到远程文件中 下篇帖子: jenkins持续集成环境搭建
累计签到:54 天
连续签到:1 天
发表于 2016-7-14 23:08:41 | 显示全部楼层
图文并茂,值得推荐

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

累计签到:90 天
连续签到:1 天
发表于 2017-8-4 16:23:38 | 显示全部楼层
你值得拥有

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表