国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用 Jenkins 自動部署 Docker 服務(二、構建部署篇)

denson / 2779人閱讀

摘要:如果還沒有搭建好可以使用的,請先移步到這篇文章進行搭建使用自動部署服務一搭建篇目標通過實現推送代碼后自動部署基于的服務準備工作獲取示例項目或者直接復制以下文件內容獲取示例項目項目文件頁面文件鏡像文件部署文件部署腳本文件頁面文件項目很簡單,

如果還沒有搭建好可以使用 Docker 的 Jenkins,請先移步到這篇文章進行搭建

使用 Jenkins 自動部署 Docker 服務(一、Jenkins 搭建篇) 目標
通過 Jenkins 實現推送代碼后自動部署基于 Docker 的服務
準備工作
獲取示例項目或者直接復制以下文件內容
# 獲取示例項目
git clone https://github.com/kwkwc/jenkins_demo.git

# 項目文件
├── index.html              # 頁面文件
├── Dockerfile              # 鏡像文件
├── docker-compose.src.yml  # Docker 部署文件
├── deploy_jenkins.sh       # 部署腳本
├── Jenkinsfile             # Jenkins Pipeline 文件
頁面文件
項目很簡單,就是一個靜態網頁
index.html


    
        
        Jenkins demo
    
    
        

Jenkins demo

鏡像文件
鏡像以 nginx 為基礎鏡像,然后復制 index.html 進容器
Dockerfile
FROM nginx:1.15.2
ENV REFRESHED_AT 2018-08-09

COPY ./index.html /usr/share/nginx/html/index.html

RUN ln -sf /dev/stdout /var/log/nginx/access.log 
    && ln -sf /dev/stderr /var/log/nginx/error.log

EXPOSE 80

STOPSIGNAL SIGTERM

CMD ["nginx", "-g", "daemon off;"]
Docker 部署文件
設置了 8081 端口和部署失敗重試
docker-compose.src.yml
version: "3.4"
services:
  jenkins_demo:
    image: IMAGE_LATEST
    deploy:
      restart_policy:
        condition: on-failure
    expose:
      - "80"
    ports:
      - 8081:80
部署腳本 deploy_jenkins.sh
#!/bin/bash

# 容器名稱
CONTAINER="jenkins_demo"
# 鏡像名稱(以日期時間為鏡像標簽,防止重復)
IMAGE=$CONTAINER":"$(date -d "today" +"%Y%m%d_%H%M%S")

# 刪除滾動更新殘留的容器
docker rm `docker ps -a | grep -w $CONTAINER"_"$CONTAINER | awk "{print $1}"`
# 強制刪除滾動更新殘留的鏡像
docker rmi --force `docker images | grep -w $CONTAINER | awk "{print $3}"`

# 創建新鏡像
docker build -t $IMAGE . && 

# 刪除 docker-compose.jenkins.yml 文件,防止使用相同鏡像
rm -rf docker-compose.jenkins.yml && 

# 復制 docker-compose.src.yml 文件,防止污染原文件
cp docker-compose.src.yml docker-compose.jenkins.yml && 

# 替換鏡像名標志位為最新鏡像
sed -i s%IMAGE_LATEST%$IMAGE%g docker-compose.jenkins.yml && 

# 使用 docker stack 啟動服務
docker stack deploy -c docker-compose.jenkins.yml $CONTAINER
實現無工具自動部署
我們暫時忘記 Jenkins,先看看無工具自動部署是怎么實現的
初始化 Docker Swarm 集群網絡
由于我們使用了 Docker Stack,他可用于實現滾動更新,分布式集群,但依賴于  Docker Swarm 集群網絡,直接使用會報錯,所以需要先初始化 Docker Swarm 集群網絡
# 初始化 Docker Swarm 集群網絡
docker swarm init
運行部署腳本
./deploy_jenkins.sh
查看鏡像
docker images

查看容器
docker ps

瀏覽器打開
http://127.0.0.1:8081
成功自動部署

更改內容
嘗試修改 index.html 內容再運行部署腳本 ./deploy_jenkins.sh
效果

實現 Jenkins 自動部署
Jenkins 的自動部署本來比較復雜,但是后來有了 Pipeline,一切都簡單了,Pipeline 是 Jenkins 的一個插件,初始化 Jenkins 的時候會推薦安裝,如果沒有請自行安裝
Jenkins Pipeline 文件
項目中如果有 Jenkinsfile 文件, Jenkins 檢測到就會自動按 Jenkinsfile 寫的流程運行命令,例如這個 Jenkinsfile 文件里面寫的就是自動幫我們運行剛才的部署腳本
Jenkinsfile
pipeline {
  agent none
  stages {
    stage("Deploy") {
      agent any
      steps {
        echo "Deploying"
        sh "./deploy_jenkins.sh"
      }
    }
  }
}
新建任務
輸入任務名稱,選擇流水線

填寫信息
只需要填寫流水線里面的信息
"定義" 選擇 "Pipeline script from SCM"
"SCM" 選擇 "Git"
"Repository URL" 填寫 Git 倉庫地址
選好 Git 分支
如果是私密倉庫,在 “Credentials” 那一欄添加賬號密碼然后選擇賬號就行

查看任務
保存后回到主頁就可以看到我們新建的任務,可以看到狀態、運行情況等信息

手動構建
點擊一下界面的立即構建按鈕就可以開始構建了


自動構建(定時查詢)
設置構建觸發器,例如每 30 分鐘查詢一次是否有更新,有則自動構建

自動構建(主動通知)
主動通知需要安裝插件,這里以 Gitea 為例子,Gitea 使用的是 Gogs 的插件
"系統管理" --> "插件管理" --> "可選插件" 搜索 Gogs,勾選直接安裝,安裝成功后在項目配置里面會多出一個 "Gogs Webhook" 選項,不需要配置任何東西,安裝了就行


設置 Gitea 鉤子
在 Gitea 的 Webhooks 中填寫下面的 URL 就可以實現推送代碼后主動通知 Jenkins 自動部署,其他基于 Git 的倉庫設置一樣
http://127.0.0.1:8080/gogs-webhook/?job=jenkins_demo

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27401.html

相關文章

  • 使用 Jenkins 自動部署 Docker 服務(一、Jenkins 搭建

    摘要:直接使用官方的鏡像一般會有兩個問題導致不能正常自動部署基于的服務。 直接使用 Jenkins 官方的鏡像一般會有兩個問題導致不能正常自動部署基于 Docker 的服務。 存在的問題 官方的鏡像默認不是使用 root 賬號,雖然 Jenkins 可以正常啟動,但是因為沒有權限導致不能向宿主機寫文件 Jenkins 基于 Docker 搭建,雖然 Jenkins 同樣可以正常啟動,但不能...

    Clect 評論0 收藏0
  • 一套基礎自動部署搭建過程

    摘要:問題背景公司初創技術團隊,沒有任何基礎設施的情況下,需要搭建一系列管理以及自動化部署等工具所以引發了下面一系列的部署過程,歷時兩天,中間也是碰到各種問題,但最終把基本工具全部搭建成功,耶,下面帶大家一起看下此次搭建過程。 問題背景 公司初創技術團隊,沒有任何基礎設施的情況下,需要搭建一系列code管理以及自動化部署等工具....所以引發了下面一系列的部署過程,歷時兩天,中間也是碰到各種...

    mzlogin 評論0 收藏0
  • 從0開始搭建自動部署環境(續)

    摘要:從開始搭建自動部署環境續前言上一篇從開始搭建自動部署環境雖然環境搭建起來了,但是配置少了一部分步驟。創建本地倉庫參考新建項目項目是我寫的一個用來測試環境的項目,代碼托管在上。 從0開始搭建自動部署環境(續) 前言 上一篇從0開始搭建自動部署環境雖然環境搭建起來了,但是配置少了一部分步驟。本來應該寫到上一篇中,但是這樣做篇幅過長了。另外,此篇會使用自動部署一個同步在Github上的Spr...

    lily_wang 評論0 收藏0
  • 從0開始搭建自動部署環境(續)

    摘要:從開始搭建自動部署環境續前言上一篇從開始搭建自動部署環境雖然環境搭建起來了,但是配置少了一部分步驟。創建本地倉庫參考新建項目項目是我寫的一個用來測試環境的項目,代碼托管在上。 從0開始搭建自動部署環境(續) 前言 上一篇從0開始搭建自動部署環境雖然環境搭建起來了,但是配置少了一部分步驟。本來應該寫到上一篇中,但是這樣做篇幅過長了。另外,此篇會使用自動部署一個同步在Github上的Spr...

    shuibo 評論0 收藏0
  • Jenkins + Docker 簡單部署 node.js 項目

    摘要:目前官方已開始推薦使用替代之前的做為基礎鏡像環境。包括鏡像下載速度加快,鏡像安全性提高,主機之間的切換更方便,占用更少磁盤空間等。 有了前幾篇的基礎后,我們現在已經能 docker 篇: 構建 docker 鏡像 上傳私有倉庫 拉取私有鏡像 啟動容器 jenkins 篇: 配置 pipeline 觸發 pipeline 接下來就可以結合兩者,用 jenkins + docker...

    princekin 評論0 收藏0

發表評論

0條評論

denson

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<