現現在SpringBoot、Jenkins、Docker這些技術已經很是流行,SpringBoot提升了JavaEE應用的開發效率,Jenkins實現了項目的持續集成,Docker使應用的部署變得靈活。本系列文章將經過這些技術實現SpringBoot的自動化構建和部署。具體流程模擬工做中常見的場景,將代碼提交至SVN,去Jenkins(部署於公司內網以訪問公司的SVN服務器)觸發構建項目,Jenkins拉取SVN的代碼構建成Docker鏡像並將鏡像推送至harbor鏡像倉庫(部署於外網以被線上應用服務器進行鏡像拉取),最後Jenkins再遠程調用線上應用服務器的shell命令,使應用服務器拉取剛構建好的鏡像進行部署。整個過程人工參與的部分僅有代碼提交和點擊Jenkins構建按鈕(甚至可讓Jenkins自動檢測SVN代碼提交自動觸發構建)。本文先介紹Docker服務、Harbor鏡像倉庫和Jenkins服務的部署。linux
要運行Docker容器須要先部署docker,咱們使用免費的Docker CE(社區版)。這裏根據須要在1到2臺服務器(或虛擬機)上部署Docker,若是隻是用於學習測試,能夠將全部服務部署在一臺服務器或虛擬機上,若是是生產環境,一般須要在Jenkins服務器和應用服務器都部署Docker服務。git
有能力的建議直接看官方文檔並跳過本節
https://docs.docker.com/install/linux/docker-ce/centos/github
我使用的是操做系統是CentOS,對於CentOS系統,Docker官方要求使用CentOS 7.x的版本。docker
$ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
若是在下一步下載速度不佳,能夠考慮使用阿里的Docker CE 鏡像源來節約時間:shell
$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ sudo yum -y install docker-ce docker-ce-cli containerd.io
$ sudo systemctl start docker
$ sudo docker run hello-world
看到如下輸出,證實剛安裝的Docker能夠正確地拉取鏡像並運行容器了。vim
Hello from Docker!centos
Jenkins支持Linux包管理器安裝(如yum)、war包部署和Docker容器部署。我選擇使用Jenkins的官方Docker鏡像部署Jenkins,不過爲了在官方鏡像的基礎上多作兩件事情,這裏須要寫一個Dockerfile從新打包Jenkins鏡像。這裏須要保證部署Jenkins的服務器上已經安裝了Docker服務。api
vim Dockerfile
#使用Jenkins官方鏡像做爲基礎鏡像 FROM jenkins/jenkins:lts #將帳戶改成root USER root #安裝jenkins調用容器外部docker命令時須要的依賴 RUN apt update && apt install -y libltdl-dev
sudo docker build -t myimg/jenkins .
run -d -p 8080:8080 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker --name jenkins-container03 mkimg/jenkins
這裏將Jenkins的主目錄掛載到宿主機,並掛載Docker相關路徑以供Jenkins調用宿主機的Docker。訪問ip:8080,看到Jenkins的登陸頁面證實Jenkins的部署已經成功。Jenkins的配置和使用會放到下一篇文章。瀏覽器
Docker官方提供了公共倉庫Docker hub,可是企業不但願公開的應用須要經過搭建私有鏡像倉庫來存放,Docker官方提供的registry私有倉庫缺乏UI界面須要額外安裝,咱們更願意選擇流行的Harbor來做爲私有鏡像倉庫,它提供了易用的UI界面和管理功能。有能力的能夠參照官方文檔完成部署。https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md服務器
Harbor使用Docker Compose進行部署,因此須要先安裝Docker Compose。能夠參照GitHub https://github.com/docker/compose/releases
curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
驗證
docker-compose --version
wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-online-installer-v1.7.4.tgz tar -zxvf harbor-online-installer-v1.7.4.tgz
進入解壓後的目錄
cd harbor/
修改配置文件harbor.cfg的主機配置爲實際的IP或域名
hostname = myhost
執行安裝腳本
./install.sh
在瀏覽器中打開剛纔設置的hostname,harbor後臺默認使用80端口,看到登錄界面的話即爲安裝成功。
至此實現自動化構建和部署所需的服務環境已經搭建完畢,下片文章將介紹具體的配置和使用,將整個流程打通。