現如今SpringBoot、Jenkins、Docker這些技術已經非常流行,SpringBoot提高了JavaEE應用的開發效率,Jenkins實現了項目的持續集成,Docker使應用的部署變得靈活。本系列文章將通過這些技術實現SpringBoot的自動化構建和部署。具體流程模擬工作中常見的場景,將代碼提交至SVN,去Jenkins(部署於公司內網以訪問公司的SVN服務器)觸發構建項目,Jenkins拉取SVN的代碼構建成Docker鏡像並將鏡像推送至harbor鏡像倉庫(部署於外網以被線上應用服務器進行鏡像拉取),最后Jenkins再遠程調用線上應用服務器的shell命令,使應用服務器拉取剛構建好的鏡像進行部署。整個過程人工參與的部分僅有代碼提交和點擊Jenkins構建按鈕(甚至可以讓Jenkins自動檢測SVN代碼提交自動觸發構建)。本文先介紹Docker服務、Harbor鏡像倉庫和Jenkins服務的部署。
一、 部署docker環境
要運行Docker容器需要先部署docker,我們使用免費的Docker CE(社區版)。這里根據需要在1到2台服務器(或虛擬機)上部署Docker,如果只是用於學習測試,可以將所有服務部署在一台服務器或虛擬機上,如果是生產環境,通常需要在Jenkins服務器和應用服務器都部署Docker服務。
有能力的建議直接看官方文檔並跳過本節
https://docs.docker.com/install/linux/docker-ce/centos/
我使用的是操作系統是CentOS,對於CentOS系統,Docker官方要求使用CentOS 7.x的版本。
1. 配置yum倉庫
$ 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 鏡像源來節約時間:
$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2. 安裝Docker
$ sudo yum -y install docker-ce docker-ce-cli containerd.io
3. 啟動Docker
$ sudo systemctl start docker
4. 驗證Docker
$ sudo docker run hello-world
看到以下輸出,證明剛安裝的Docker可以正確地拉取鏡像並運行容器了。
Hello from Docker!
二、 部署Jenkins
Jenkins支持Linux包管理器安裝(如yum)、war包部署和Docker容器部署。我選擇使用Jenkins的官方Docker鏡像部署Jenkins,不過為了在官方鏡像的基礎上多做兩件事情,這里需要寫一個Dockerfile重新打包Jenkins鏡像。這里需要保證部署Jenkins的服務器上已經安裝了Docker服務。
1. 編寫Dockerfile
vim Dockerfile
#使用Jenkins官方鏡像作為基礎鏡像
FROM jenkins/jenkins:lts
#將賬戶改為root
USER root
#安裝jenkins調用容器外部docker命令時需要的依賴
RUN apt update && apt install -y libltdl-dev
2. 打包鏡像
sudo docker build -t myimg/jenkins .
3. 啟動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的配置和使用會放到下一篇文章。
三、 部署Harbor
Docker官方提供了公共倉庫Docker hub,但是企業不希望公開的應用需要通過搭建私有鏡像倉庫來存放,Docker官方提供的registry私有倉庫缺少UI界面需要額外安裝,我們更願意選擇流行的Harbor來作為私有鏡像倉庫,它提供了易用的UI界面和管理功能。有能力的可以參照官方文檔完成部署。https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
1. 安裝Docker Compose
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
2. 下載harbor聯網安裝版,參照https://github.com/goharbor/harbor/releases
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端口,看到登陸界面的話即為安裝成功。
四、總結
至此實現自動化構建和部署所需的服務環境已經搭建完畢,下片文章將介紹具體的配置和使用,將整個流程打通。