天天看點

Jenkins+Docker+SpringCloud微服務持續內建

作者:Java網際網路技術棧

Jenkins+Docker+SpringCloud微服務持續內建(上)

  • Jenkins+Docker+SpringCloud持續內建說明

Jenkins+Docker+SpringCloud持續內建說明

Jenkins+Docker+SpringCloud微服務持續內建

大緻流程說明:

● 開發人員每天将代碼送出到Gitlab代碼倉庫。

● Jenkins從Gitlab中拉取項目代碼,編譯并打成jar包,然後建構Docker鏡像,将鏡像上傳到Harbor私有倉庫。

● Jenkins發送SSH遠端指令,讓生産部署伺服器從Harbor私有倉庫拉取鏡像到本地,然後建立容器。

● 最後,使用者可以通路到容器。

伺服器清單

伺服器名稱 IP位址 安裝的軟體
代碼托管伺服器 192.168.18.100 Gitlab(已安裝)
持續內建伺服器 192.168.18.101 Jenkins(已安裝)、Maven(已安裝)、Docker18.06.1-ce
Docker倉庫伺服器 192.168.18.102 Docker18.06.1-ce、Harbor2.1.3
生産伺服器 192.168.18.103 Docker18.06.1-ce

微服務項目說明

Jenkins+Docker+SpringCloud微服務持續內建

環境準備

  • Docker安裝這一步就省略了,大家自行安裝

Harbor的安裝

● Harbor是在IP為192.168.18.102的伺服器上安裝的,并且使用的Docker Compose進行安裝,而Docker Compose依賴于Docker,是以需要先安裝Docker。

● 關閉防火牆。

安裝Docker Compose

  • 安裝Docker Compose
sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose           
sudo chmod +x /usr/local/bin/docker-compose           
  • 檢視Docker Compose是否安裝成功:
docker-compose version           

安裝Harbor

  • 下載下傳Harbor
wget https://github.com/goharbor/harbor/releases/download/v2.1.3/harbor-offline-installer-v2.1.3.tgz           
  • 解壓Harbor:
tar -zxvf harbor-offline-installer-v2.1.3.tgz -C /usr/local           
  • 修改Harbor的配置:
cd /usr/local/harbor           
mv harbor.yml.tmpl harbor.yml           
vim harbor.yml           
# 修改部分
hostname: 192.168.18.102
http:
  port: 85
# 将https注釋掉  
# https:
  # https port for harbor, default is 443
  #  port: 443
  # The path of cert and key files for nginx
 # certificate: /your/certificate/path
 # private_key: /your/private/key/path           
  • 安裝Harbor:
./prepare           
./install.sh           
  • 啟動、停止、重新啟動Harbor:
# 啟動
docker-compose up -d           
# 停止
docker-compose stop           
# 重新啟動
docker-compose restart           

通路Harbor

● 通路位址:http://192.168.1.102:85。

● Harbor的預設賬戶和密碼:admin/Harbor12345。

在Harbor中建立使用者和項目

建立項目

● Harbor的項目分為公開和私有。

● 公開項目:所有的使用者都可以通路,通常存放公共的鏡像,預設有一個library公開項目。

● 私有項目:隻有授權使用者才可以通路,通常存在項目本身的鏡像。

● 我們可以為微服務建立一個項目:

Jenkins+Docker+SpringCloud微服務持續內建

建立使用者

給私有項目配置設定使用者

Jenkins+Docker+SpringCloud微服務持續內建
角色 權限說明
訪客 對于指定的項目擁有隻讀權限
開發人員 對于指定的項目擁有讀寫權限
維護人員 對于指定的項目擁有讀寫權限,建立webhooks
項目管理者 除了讀寫權限,同時擁有使用者管理/鏡像掃描等管理權限

以新使用者登入Harbor

Jenkins+Docker+SpringCloud微服務持續內建

把鏡像上傳到Harbor

  • 先拉取一個鏡像,比如MySQL5.7。
docker pull mysql:5.7           
  • 查詢鏡像:
docker images           
  • 給鏡像打tag:
Jenkins+Docker+SpringCloud微服務持續內建

标簽tag需要遵循一定的規範,如上圖Harbor界面所示。

docker tag mysql:5.7 192.168.18.102:85/volunteer/mysql:5.7           
  • 推送鏡像:
docker push 192.168.18.102:85/volunteer/mysql:5.7           
Jenkins+Docker+SpringCloud微服務持續內建

之是以報錯,是因為Docker沒有将Harbor加入到信任清單中。

  • 在伺服器192.168.18.101和192.168.18.102以及192.168.18.103把Harbor位址加入到Docker信任清單中:
vim /etc/docker/daemon.json           
{
 
  "exec-opts": ["native.cgroupdriver=systemd"],
  "insecure-registries": ["192.168.18.102:85"],
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}           
  • 重新開機Docker:
systemctl daemon-reload           
systemctl restart docker           
  • 重新開機Harbor:
cd /usr/local/harbor           
docker-compose restart           
  • 再次執行推送指令,提示權限不足:
docker push 192.168.18.102:85/volunteer/mysql:5.7           
  • 登入Harbor:
docker login -u dhy -p pwd 192.168.18.102:85           
  • 推送鏡像:
docker push 192.168.18.102:85/volunteer/mysql:5.7           
Jenkins+Docker+SpringCloud微服務持續內建

從Harbor上拉取鏡像

前提說明

● 伺服器的IP是192.168.18.103。

把Harbor位址加入到Docker信任清單中

  • 把Harbor位址加入到Docker信任清單中
vim /etc/docker/daemon.json           
{
 
  "exec-opts": ["native.cgroupdriver=systemd"],
  "insecure-registries": ["192.168.18.102:85"],
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}           

重新開機Docker:

systemctl daemon-reload           
systemctl restart docker           

Docker指令登入Harbor

docker login -u dhy -p pwd 192.168.18.102:85           

拉取鏡像

docker pull 192.168.18.102:85/volunteer/mysql:5.7           

繼續閱讀