在互聯網時代,對於每一家公司,軟件開發和發佈的重要性不言而喻,目前已經造成一套標準的流程,最重要的組成部分就是持續集成(CI)及持續部署、交付(CD)。html
持續集成(CI)表示由開發對項目代碼進行確認修改並推送到git,svn,ftp等應用的持續更新發版操做。java
持續部署(CD)表示根據jenkins在應用中拉取的代碼能夠對目標服務器進行持續部署到任何環境下。node
將代碼更新後,提交到指定的存儲庫中,如git,svn以及ftp等應用中,再由運維經過jenkins拉取存儲在應用中的項目代碼,打包成war包的形式部署到對應的測試環境以及生產環境中。docker的參與就在於,經過執行shell語句拉取遠程鏡像倉庫的鏡像,以及git,svn,ftp中的項目代碼,在本地docker環境下,經過Dockerfile的形式再改遠程鏡像中構建出一套存在項目代碼的新的基礎鏡像,並將鏡像上傳到遠程registry中,再經過jenkins中ssh協議對想要部署的docker主機進行鏡像拉取,容器建立等遠程部署操做,這樣服務就能正常運行了。linux
工做流程:git
開發人員提交代碼到Git版本倉庫;github
Jenkins人工/定時觸發項目構建;web
Jenkins拉取代碼、代碼編碼、打包鏡像、推送到鏡像倉庫;docker
Jenkins在Docker主機建立容器併發布。shell
環境規劃以下:apache
node-1:192.168.175.128 jenkins/docker
node-2:192.168.175.130 docker/部署主機
node-3:192.168.175.131 git/registry 倉庫
主機node-3
1.安裝git
#yum install -y git
2.建立git用戶、
#useradd git
#passwd git
3.以git用戶的身份在其家目錄下建立git倉庫
#su - git
~]mkdir solo.git //該倉庫絕對路徑爲/home/git/solo.git
4.嘗試拉取遠程git倉庫中的代碼
#git clone git@192.168.175.131:/home/git/solo.git
2.部署私人registry
主機 node-3
1.安裝docker
# yum install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm -y
# yum install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm -y
2.啓動docker
# systemctl start docker && systemctl enable docker
3.建立registry,並在後臺運行
# docker pull registry
# docker run -itd --name registry -p 5000:5000 --restart=always registry
3.部署jenkins
1.安裝jdk,maven
# tar -xf jdk-8u181-linux-x64.tar.gz -C /usr/local
# mv /usr/local/jdk-8u181-linux-x64 /usr/local/jdk1.8
# tar -xf apache-maven-3.5.0-bin.tar.gz -C /usr/local
# mv /usr/local/apache-maven-3.5.0-bin /usr/local/maven
# cat > /etc/profile.d/java.sh << EOF
export JAVA_HOME=/usr/local/jdk1.8
export MAVEN_HOME=/usr/local/maven
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
EOF
# source /etc/profile.d/java.sh
2.安裝tomcat環境(源碼安裝)
# tar -xf apache-tomcat-8.5.33.tar.gz -C /usr/local
# mv /usr/local/apache-tomcat-8.5.33 /usr/local/tomcat
3.導入jenkins的war包
如圖點擊下載最後一個Generic Java package(war):
# rm -rf /usr/local/tomcat/webapps/ROOT/*
# unzip jenkins -d /usr/local/tomcat/webapps/ROOT/
# cd /usr/local/tomcat/bin
# ./startup //啓動tomcat
安裝的jenkins默認家目錄在/root/.jenkins
瀏覽器訪問:http://192.168.175.128:8080
輸入密碼,進行初始化
選擇右邊的選擇安裝引擎
爲了保證jenkins主機可以在docker主機遠程執行shell腳本,可以對git倉庫進行代碼拉取
讓jenkins主機可以無密登陸130,以及131兩臺機器
192.168.175.128下執行
# ssh-keygen -t rsa
# ssh-copy-id -i /root/.ssh/id_rsa.pud root@192.168.175.130
# ssh-copy-id -i /root/.ssh/id_rsa.pud git@192.168.175.131
4.導入代碼到git倉庫
# git clone https://github.com/b3log/solo
# cd solo
移除舊的推送地址,添加新的:
# git remote remove origin
# git remote add origin git@192.168.0.219:/home/git/solo.git
提交代碼到Git倉庫並建立tag:
# touch src/main/webapp/a.html
# git add .
# git commit -m 「a」
建立標籤:
# git tag 1.0.0
推送到Git服務器:
# git push origin 1.0.0
5.建立Tomcat基礎鏡像並導入registry
1.tomcat Dockerfile
[root@node-3 ~]# cat docker/tomcat/Dockerfile2
FROM centos:7
MAINTAINER wjq
RUN yum install unzip iproute -y
ENV JAVA_HOME /usr/local/jdk
ADD apache-tomcat-8.0.46.tar.gz /usr/local
RUN mv /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat
WORKDIR /usr/local/tomcat
EXPOSE 8080
ENTRYPOINT ["./bin/catalina.sh", "run"]
2.建立鏡像
# docker build -t 192.168.175.128:5000/tomcat-9 -f Dockerfile2 .
3.上傳到私有鏡像倉庫
# docker push 192.168.175.128:5000/tomcat-9
6.jenkins配置定義
1.系統管理 --> 憑據
配置遠程docker主機的身份,讓jenkins可以在該docker主機上進行鏡像拉取,容器構建操做,能夠使用密鑰,密碼的方式
2.系統管理 --> 系統設置 配置遠程主機信息,主機IP,使用的憑據,訪問端口
3.系統管理 --> 全局工具設置 設置jdk,maven,git的全局配置,如路徑,名稱
4.系統管理 --> 管理插件 安裝插件SSH,Git Parameter,Maven Integration plugin
5.建立Maven項目,進行配置
設置在git倉庫拉取代碼,須要設置無密鏈接
在本地jenkins執行shell命令,並在遠程docker操做主機將封裝好的鏡像拉渠道docker主機,刪除以前部署過的鏡像和容器,並啓動封裝了最新代碼的鏡像容器
進行部署
1.保存配置
2.Build with Parameters:根據Tag選擇版本號
3.進入控制檯查看輸出
4.訪問博客