jenkins +docker私有倉庫持續發布+持續部署


一小段學習時間的知識點獨立的,需要一點一點連接組成網。
 
前要:
-開發提交git的時候要注明版本。
-在Jenkins中,實際分成了兩部分,持續發布一個項目,持續部署是一個項目。分開是因為交付和部署可能不是同一個人。
-182是私有倉庫的IP,170是需要部署的環境。
 
大概思路:
1、把打包好的鏡像放到哪里去?        ------創建私有倉庫。
2、把什么內容,如何放到私有倉庫? -----拉取源碼和對應的版本號,打包成鏡像,推送到私有倉庫。
3、如何拿到已經放好的?                   -----從私有倉庫自動拉取並啟動鏡像。
4、預期結果?                                    ------輸入訪問地址即可訪問。
 

一、私有倉庫的創建

docker hub 在線存儲庫可以由任何用戶發布和使用,在涉及隱私項目或者公司處在內網就不太適用了。這就涉及需要到私有存儲庫了。私有倉庫基於registry鏡像。
 

1、安裝指令

      
docker pull registry
 

2、配置私有倉庫地址

#1、執行編輯路徑
vim /etc/docker/daemon.json
#2、加入"insecure-registries"
"insecure-registries":[192.168.0.182]
#3、按esc 輸入: wq 保存
#4、保存之后重啟一下
docker systemctl restart docker

 

3、創建容器

docker run -d -p 5000:5000 --name registry docker.io/registry
部分參數說明:
  • -d:讓容器在后台運行
  • -p:指定容器內部使用的網絡端口映射到我們使用的主機上
  • --name:指定容器創建的名稱

4、重新加載配置

sudo systemctl daemon-reload

5、重啟一下docker

sudo systemctl daemon-reload

 

自此私用倉庫 建立已經完成。如果想驗證一下,可以通過docker push 進行推送,然后通過 http://192.168.0.182:5000/v2/_catalog 來驗證是否成功。
 
 

二、持續發布

1、勾選項目是參數化 ,選擇git參數,填寫參數名稱(這個名稱要確定好,在后面構建鏡像的時候會用到)
 
0
 
2.輸入源碼地址
0
 
3.構建 shell
0
 
#構建鏡像 
docker build -t 192.168.0.182:5000/ci:$tag .
#推送鏡像到倉庫 -- 交付版本
docker push 192.168.0.182:5000/ci:$tag

 

4、運行構建:
 
0
 
0
 
5、驗證是否成功:
 
訪問182上的倉庫,已經能夠看到我們打包好提交的鏡像名稱了。
0
 -------------------------------------
遇到的問題:
The push refers to repository [192.168.0.182:5000/ci]
Get https://192.168.0.182:5000/v2/: http: server gave HTTP response to HTTPS client

 

--解決:要在推送所接受的機子(vim /etc/docker/daemon.json)里面加上如下內容:
"insecure-registries": ["192.168.0.182:5000"]
 
然后再對docker進行重啟
systemctl restart docker.service

 

 

三、持續部署

1、版本號參數:
     部署部分不用到git源碼了,但是需要設置tag,就是發版的版本號。
      0
tag這個名字是要定義好的,在docker-compose中需要調用這個參數
2、構建:
  1、shell
# 復制docker-compose模板文件
cp /home/hww/.jenkins/workspace/jenkins+docker/docker-compose-jenkins-template.yml docker-compose.yml 

# 修改模板文件中的鏡像版本
sed -i "s/{tag}/$tag/g" docker-compose.yml

# 上傳到170,后續在170啟動容器【要部署在哪個的容器】
scp docker-compose.yml root@192.168.0.170:/root/java/jenkins

  

  2.Send files or execute commands over SSH 設置
0
 
cd /root/java/jenkins
停止與刪除舊容器
docker-compose down
拉取新鏡像,並啟動新容器
docker-compose up -d

  

3、啟動構建
 
0
 
0
4、驗證
 
docker image查看鏡像
0
 
docker ps 查看已經啟動的容器
0
 
瀏覽器啟動訪問:
0
 
至此,整個流程已經完成。
 

 
注意的是:
build 鏡像名稱也要規定好,docker-compose 里面有定義。所以兩者要一樣(imaage/container_name)
version: "3.3"
services:
  hrunmgr:
    # 這是jenkins發版打包的鏡像,上傳到私有倉庫192.168.0.182
    image: 192.168.0.182:5000/hrunmgr:{tag}
    container_name: hrunmgr
    environment:
      - TZ=Asia/Shanghai
    #network_mode: host
    #只暴露2個端口
    ports:
      - "8080:8080"
      - "5555:5555"

    # 由於jenkins發版打包的鏡像已經構建過代碼,不用重復構建,因此去掉重復代碼
    # build: .
    # volumes: # 映射目錄, 方便讀寫
    #   - ./:/apps/HttpRunnerManager
    # #command: "/bin/sh", "-c", "while true; do sleep 100; done" # 讓進程一直跑, 否則容器會exit
    # entrypoint: /apps/HttpRunnerManager/start.sh

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM