Jenkins+Harbor+Docker發佈

使用Jenkins發佈Docke
須要準備的,docker,jenkins,Harbor
docker安裝
安裝依賴:
# yum install -y yum-utils device-mapper-persistent-data lvm2
添加Docker軟件包源:
# yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安裝Docker CE:
# yum install docker-ce -y
配置加速器:
# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://bc437cce.m.daocloud.io
 
啓動並開機啓動:
# systemctl start docker
# systemctl enable docker
#--------------------------------------------------------------------------
安裝Jenkins(使用docker安裝)
#dockerfile,內容以下
# 設置基礎鏡像
FROM jenkins/jenkins:lts
 
# 下面是一些建立者的基本信息
 
# 設置環境變量,全部操做都是非交互式的
#ENV DEBIAN_FRONTEND noninteractive
 
#ENV MAVEN_HOME /opt/apache-maven-3.3.9
#ENV PATH $PATH:/opt/apache-maven-3.3.9/bin
#設置爲root用戶運行
USER root
 
#安裝ansible,rsync,建立密鑰目錄
RUN echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" >> /etc/apt/sources.list \
&&  apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 \
&& apt-get update \
&& apt-get -y install ansible rsync \
&& rm -rf /etc/localtime \
&& ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 
USER jenkins
#添加第三方工具JDK,mamven,密鑰,opt.tar.gz中已加入了JDK,mamven,ADD,解壓後即用,若是以爲這樣致使鏡像容量過大,能夠去掉,用-v掛載
ADD opt.tar.gz /
COPY id_rsa /var/jenkins_home/.ssh
#--------------------------------------------------------------------------
#構建鏡像
docker build -t ck-5 ck:v7 .
 
運行容器,以本身的須要修改,
#目錄說明
ansible             ansible配置
config              Jenkins發佈時對應的應用配置
Dockerfile        字面意思
jenkins.tar.gz    jenkins工做目錄配置
 
#容器運行命令,使用
docker run -d -p 9995:8080 \
-v /data/jenkins:/var/jenkins_home \
-v /data/jenkins-Docker/ansible:/etc/ansible \
-v /data/jenkins-Docker/config:/data/config \
-v /data/jenkins-Docker/repository:/var/jenkins_home/.m2/repository \
--name ck-5 ck:v7
 
#不須要掛載這些配置的只須要以下執行
docker run -d -p 9995:8080 --name ck-5 ck:v7     #運行Jenkins容器
 
Jenkins配置全局工具配置
 
主頁面 -> 系統管理 -> 全局工具配置
指定JDK、Maven路徑:
 
 
 
 
 
運行後進入Jenkins界面,安卓插件
SSH:用於SSH遠程Docker主機執行Shell命令
 
Jenkins安裝到此完成
#--------------------------------------------------------------------------
Harbor安裝
 
先安裝docker-compose,安裝地址: https://github.com/docker/compose/releases/
#執行
curl -L https://github.com/docker/compose/releases/download/1.24.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
 
docker-composezan 安裝完成
 
 
# cd /usr/local/src/
# tar zxf harbor-online-installer-v1.2.0.tgz -C /usr/local/
# cd /usr/local/harbor/
修改配置文件
配置文件爲:/usr/local/harbor/harbor.cfg
# vim /usr/local/harbor/harbor.cfg
hostname = 192.168.1.17 (這裏寫你的域名或者IP,先不要去管其餘配置)
執行安裝腳本:
# /usr/local/harbor/install.sh
而後會有很長一大段
。。。
。。。
。。。
好了,不信你看看,docker ps -a
使用 docker-compose來管理Harbor,
# cd /usr/local/harbor/      #注意要先進去此目錄哦
# docker-compose ps
Harbor的啓動和中止
啓動Harbor
# docker-compose start
中止Harbor
# docker-comose stop
重啓Harbor
# docker-compose restart
訪問測試
在瀏覽器輸入 192.168.1.17,由於我配置的域名爲192.168.1.17。請你們根據本身的配置狀況輸入訪問的域名;
默認帳號密碼: admin / Harbor12345 登陸後修改密碼
 
默認安裝後是http協議,docker在訪問庫的時候默認是使用https協議,因此要先修改
[root@localhost dockerfile]# more /etc/docker/daemon.json
{"insecure-registries":["192.168.1.17"]}
加入這個,加上後重啓docker ,命令:systemctl restart docker
 
須要訪問Harbor私庫的機器須要先用
docker login 192.168.1.17(私庫地址) 登陸,那個用戶下使用,就用那個用戶界面下去操做登陸
若是是用Jenkins 執行的 重啓下Jenkins    重啓命令:service jenkins restart
 
docker發佈
首先先構建一個Tomcat基礎鏡像,JDK安裝在宿主機上,容器以掛載形式使用
JDK安裝
# tar zxvf jdk-8u45-linux-x64.tar.gz
# mv jdk-8u45-linux-x64 /usr/local/jdk1.8
 
Tomcat基礎鏡像Dockerfile:
# cat Dockerfile
FROM centos:7
 
ENV VERSION=8.5.32
ENV JAVA_HOME /usr/local/jdk
 
RUN yum install wget -y
 
RUN wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \
    tar zxf apache-tomcat-${VERSION}.tar.gz && \
    mv apache-tomcat-${VERSION} /usr/local/tomcat && \
    rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && \
    mkdir /usr/local/tomcat/webapps/ROOT
 
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
 
構建鏡像並上傳到Harbor
docker build -t  harbor.yedsfe.cn/test/tomcat-web .     #構建鏡像,倉庫地址/鏡像名稱
docker push harbor.yedsfe.cn/test/tomcat-web            #上傳鏡像
 
 
接下來就是Jenkins的job配置了:
建立一個新的 Maven 項目
添加字符參數
添加倉庫地址,我這是SVN
 
構建war包
增長個執行shell步驟
 
#docker倉庫地址和鏡像名稱:版本
REPOSITORY=harbor.yijhjge.cn/test/mjs-web:${Tag}
echo '================開始構建鏡像================'
cat > Dockerfile << EOF
FROM harbor.yinmishe.cn/test/tomcat-web:latest
RUN rm -rf /usr/local/tomcat/webapps/ROOT
COPY $module/target/*.war /usr/local/tomcat/webapps/ROOT.war
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
EOF
docker build -t $REPOSITORY .
echo '================開始推送鏡像================'
docker push $REPOSITORY
echo '================刪除ci機器鏡像=============='
docker image rm $REPOSITORY |true
接着部署到發佈機器 
 
REPOSITORY=harbor.yddfddwee.cn/test/mjs-web:${Tag}
# 部署
docker rm -f blog-solo |true
docker image rm $REPOSITORY |true
docker container run -d --name blog-solo -v /usr/local/jdk:/usr/local/jdk -p 88:8080 $REPOSITORY
 
保存後,就配置完成了
 
總結下過程,雖說寫的不少但其實發布過程很簡單,把Jenkins, Docker ,Harbor倉庫搭建好
先在構建個Tomcat基礎鏡像傳入Harbor倉庫
Jenkins拉取svn或者git倉庫中的代碼,使用maven打包出war包
增長,執行shell,拉取Harbor中的Tomcat基礎鏡像,替換war包後,構建出本次項目鏡像,並上傳到harbor倉庫,能夠在鏡像命名的時候使用Tag區分
使用ssh插件,在遠程需發佈機器上,使用本次服務鏡像,運行容器
這樣就完成了 
參考資料:
相關文章
相關標籤/搜索