Jenkins+docker實現應用發佈

Jenkins+docker實現應用發佈java

Jenkinscentos6.5 ip192.168.83.84linux

Dockercentos7.2 ip192.168.83.60git

 

1、安裝Jenkinsweb

最新版:docker

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repoapache

sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.keyvim

sudo yum install jenkinscentos


穩定版瀏覽器

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repotomcat

sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

sudo yum install jenkins

 

根據需求在jenkins的服務器上(centos)執行其中一種命令,安裝jenkins

另:jenkins依賴java環境,需先安裝好java

 

啓動jenkins

Service Jenkins start

 

2、安裝jenkins插件

成功啓動jenkins後,在瀏覽器中輸入192.168.83.84:8080訪問配置jenkins,根據提示找到密碼並輸入,選擇默認插件自動安裝。安裝好了之後會提示建立第一個admin 用戶,建立成功後進入jenkins界面。

 

選擇系統管理—>插件管理—>可選插件

在右側filter框中輸入Docker plugin,找到Docker plugin後直接安裝

 

安裝完成後在系統管理à系統設置的最後能夠找到新增一個雲的選項

 

3、docker服務器配置

安裝dockersudo yum install docker

參考文檔:https://docs.docker.com/engine/installation/linux/centos/

 

之前臺方式啓動dockerdocker -d -H unix:///var/run/docker.sock -H 0.0.0.0:4243

 

dockerhub下一個新的centos鏡像

docker pull centos:latest

 

構建基於dockertomcat鏡像

cd

mkdir docker

cd docker

傳輸

wKiom1eF-UCgwLUBAAAM72MXnfw961.png

到該目錄並解壓

 

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

 

4、配置docker

 

登陸jenkinsweb管理端

 

點擊系統管理-->系統設置

wKioL1eF-UCgleZeAAASisHBmZQ644.png

wKioL1eF-UGy25ZMAABnZbiusYo972.png

Namedocker雲的名字,要惟一,等下有用

Docker URLDocker服務器的地址和端口

其餘參數可如圖配置,鏈接測試成功後會顯示docker的版本號


wKiom1eF-UGxToFZAAATzfgQvbM097.png

添加temple並配置

 

wKioL1eF-UKyG3yNAACAYhlHr88287.png

wKiom1eF-ULRrV_lAACH-XqBOQE535.png

wKioL1eF-UPiy3PLAACQ2e1khx8070.png

須要配置的項:

Docker Image:當前docker雲裏存在的,須要用到的dockerp_w_picpath的名字

Docker Command:啓動該docker時執行的命令

Volumes:將docker container內部的目錄掛載至宿主機的目錄

Port bindings:將docker container內部的端口映射至宿主機

Memory Limit in MB:限制dockercontainer的內存大小

Credentials:配置管理認證

 


點擊新建(maven項目)

wKiom1eF-USx68I6AACYhWmqOIA987.png


wKiom1eF-UWhl8omAAByVWetAoE221.png

wKioL1eF-UXBxYP6AAAtFultHvA435.png


選中docker container

Label Expression中填寫master(即由master來執行該job

 


wKiom1eF-UaTuk-qAACXdR1320s879.png

在源碼管理中選中git

Repository URL:須要打成war包的代碼的位置

Credentials:輸入能夠登陸git服務器的用戶密碼

 

wKioL1eF-Uaz6HRiAACBhSZsYSs430.png

勾選Build whenever a SNAPSHOT dependency is built(若是項目有依賴關係)


wKioL1eF-UeSsDMqAAAzU7VeDW0261.png

按照上圖填寫相關信息

 

wKioL1eF-UeglnIWAACDwK8YVAU910.png

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雲下要使用的鏡像名

 

點擊應用保存

 

5、相關腳本

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

相關文章
相關標籤/搜索