857432 发表于 2016-7-14 09:26:50

Jenkins+docker实现应用发布

Jenkins+docker实现应用发布Jenkins:centos6.5 ip:192.168.83.84Docker:centos7.2 ip:192.168.83.60
一、安装Jenkins 最新版:sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reposudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.keysudo yum install jenkins
稳定版sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.reposudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.keysudo 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参考文档:https://docs.docker.com/engine/installation/linux/centos/
以前台方式启动docker:docker -d -H unix:///var/run/docker.sock -H 0.0.0.0:4243
从dockerhub下一个新的centos镜像docker pull centos:latest
构建基于docker的tomcat镜像cdmkdir dockercd docker传输到该目录并解压

vim build.dfFROM centos:latestMAINTAINER akjfit
#install jdkADD jdk1.8.0_91/opt/jdk1.8.0_91ENV JAVA_HOME/opt/jdk1.8.0_91ENV PATH$PATH:$JAVA_HOME/binRUN mkdir -p"$JAVA_HOME"
#install tomcatADDapache-tomcat-9.0.0.M4 /opt/apache-tomcat-9.0.0.M4ENV CATALINA_HOME/opt/apache-tomcat-9.0.0.M4ENV PATH$CATALINA_HOME/bin:$PATHENV JAVA_OPTS -Xmx512m-Duser.timezone=GMT+08RUN 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管理端
点击系统管理-->系统设置Name:docker云的名字,要唯一,等下有用Docker URL:Docker服务器的地址和端口其他参数可如图配置,连接测试成功后会显示docker的版本号
添加temple并配置
需要配置的项:Docker Image:当前docker云里存在的,需要用到的dockerimage的名字Docker Command:启动该docker时执行的命令Volumes:将docker container内部的目录挂载至宿主机的目录Port bindings:将docker container内部的端口映射至宿主机Memory Limit in MB:限制dockercontainer的内存大小Credentials:配置管理认证

点击新建(maven项目)

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

在源码管理中选中gitRepository URL:需要打成war包的代码的位置Credentials:输入可以登录git服务器的用户密码
勾选Build whenever a SNAPSHOT dependency is built(如果项目有依赖关系)
按照上图填写相关信息
在docker宿主机上部署2个脚本,stop.sh为判断当前项目的docker容器是否在运行,在运行就stop掉并删除该容器deploy.sh为删除之前发布的包,并发布新生成的包
在jenkins主机上部署1个脚本,scp.sh为将在jenkins 主机上生成的war包传递到docker宿主机上
Action to choose:选择Provsion&StartContainerDocker Cloud name:在系统设置中配置的唯一的docker云名Template ID:该docker云下要使用的镜像名
点击应用保存
五、相关脚本scp脚本:#/bin/bash
if [ -e /opt/.jenkins/workspace/$1-master/$1-core/pom.xml];thenscp/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 20fi
stop脚本#/bin/bash
id=`dockerps -a |grep 0:$1 |awk '{print $1}'`if [ -n"$id" ];thendockerstop $iddocker rm$idelseecho"no running docker container"fi
deploy脚本:#!/bin/bash
cd/workspace/$1-masterrm -rfROOTcp/tmp/$1/$2.war /workspace/$1-masterunzip$2.war -d ROOT >/dev/nullrm -f$2.warrm -rf/workspace/$1-master/ROOT/profiles

BenjaminDu 发表于 2016-7-14 23:08:41

图文并茂,值得推荐

Tao-卓 发表于 2017-6-2 21:27:50

附件有吗?

hello11 发表于 2017-8-4 16:23:38

{:6_409:} 你值得拥有
页: [1]
查看完整版本: Jenkins+docker实现应用发布