vue自動(dòng)構(gòu)建部署:Jenkins+docker+harbor+vue

由于近期項(xiàng)目需要實(shí)現(xiàn)自動(dòng)構(gòu)建部署前端vue工程祟霍,在此留作記錄。
本文主要描述使用Jenkins進(jìn)行自動(dòng)化構(gòu)建Vue項(xiàng)目通過(guò)Docker容器部署锌妻,并將鏡像推送至Harbor鏡像倉(cāng)庫(kù)的過(guò)程代乃。關(guān)于Jenkins、Docker仿粹、Harbor的安裝不做講解搁吓。
一、依賴
Jenkins版本:2.317
Docker版本:18.06.0-ce
Harbor版本:v2.1.0-a3eca103

二吭历、Dockerfile文件

  1. 建立dockerfile文件
    Vue工程根目錄下創(chuàng)建文件Dockerfile


    image.png

    文件內(nèi)容如下:

# build stage
FROM node:12-alpine as build-stage
# 創(chuàng)建一個(gè)工作目錄
WORKDIR /app
# 復(fù)制符合.dockerignore規(guī)則的文件
COPY . .
# 安裝依賴
RUN npm install cnpm -g --no-progress --registry=https://registry.npm.taobao.org
RUN cnpm install --no-progress
# 構(gòu)建
RUN npm run build
# production stage
# 使用nginx鏡像
FROM nginx:stable-alpine as production-stage
# 使用--from把上面產(chǎn)生的靜態(tài)文件復(fù)制到nginx的運(yùn)行目錄
COPY --from=build-stage /app/dist /usr/share/nginx/html
# nginx容器內(nèi)部暴露的端口
EXPOSE 8064
# 運(yùn)行的命令
CMD ["nginx", "-g", "daemon off;"]
  1. 建立.dockerignore文件
    Vue工程根目錄下創(chuàng)建文件.dockerignore堕仔。目的:為了防止工作目錄過(guò)大,防止像node_modules這種文件被拷貝進(jìn)來(lái)晌区。
# Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
node_modules
.DS_Store
dist

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
.dockerignore
Dockerfile
*docker-compose*

# Logs
logs
*.log

# Runtime data
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*
pids
*.pid
*.seed
.git
.hg
.svn

三摩骨、Jenkins構(gòu)建并推送倉(cāng)庫(kù)

1、建立視圖及Item

2朗若、相關(guān)配置

描述

推送地址及版本

注意:可提前在harbor上構(gòu)建好項(xiàng)目恼五,此處地址配置為:IP地址/項(xiàng)目/鏡像名稱:tags,那么啟動(dòng)Jenkins構(gòu)建在構(gòu)建成功后將自動(dòng)推送到harbor上哭懈。

時(shí)間參數(shù)

注意:需要先在Jenkins上安裝好[Date Parameter Plugin]插件灾馒。

源代碼gitlab地址及配置

配置發(fā)布版本號(hào)

配置node

3、shell命令

① 檢查容器

image.png
echo "獲取當(dāng)前容器是否存在-----------------------------------------------------------------"

containerps=$(docker ps -f name=test_web -q)

containerstop=$(docker ps -a -f name=test_web -q)

for alpha in "$containerps";do

    if [ "$alpha" == "" ];then

    echo "檢查是否存在停止的容器-------------------------------------------------"

        for alpha1 in "$containerstop";do

          if [ "$alpha1" == "" ];then

          echo "不存指定容器-----------------------------------"

          else

          echo "存在停止了的 然后直接刪除-----------開始------------------"

          docker rm $alpha1

          echo "存在停止了的 然后直接刪除-----------完成------------------"

        fi

       done

    else

    echo "存在-停止運(yùn)行 然后刪除----------------------開始-----------------"

    docker stop $alpha

    docker rm $alpha

     echo "存在-停止運(yùn)行 然后刪除---------------------完成------------------"

    fi

done

其中“test_web”為容器名稱遣总。

② 構(gòu)建鏡像


image.png
# build docker image 每次構(gòu)建不產(chǎn)生緩存
docker build --no-cache -t ${PushVersion}  .

③ 運(yùn)行容器


image.png

運(yùn)行容器

docker run -d -p 8064:80 --restart always --name test_web \
-v /opt/app/test_web/app/volumes/config:/usr/share/nginx/html/config \
${PushVersion}

④ 刪除中間鏡像及推送

image.png
echo "刪除中間層鏡像-------------------------------完成----------------------------------"

docker rmi $(docker images -f "dangling=true" -q)

echo "刪除中間層鏡像-------------------------------完成----------------------------------"

echo "推送鏡像到鏡像倉(cāng)庫(kù)------------- 開始----------------------------------"

docker push ${PushVersion}

echo "推送鏡像到鏡像倉(cāng)庫(kù)------------- 完成----------------------------------"

四睬罗、Docker相關(guān)常用命令

  1. 構(gòu)建鏡像
    docker build -t mytestapi .

注意:mytestapi為鏡像名稱轨功,鏡像名稱后面有一個(gè)點(diǎn)

  1. 運(yùn)行鏡像

docker run -d -p 8064:80 --restart always --name sc_testapi \

-v /opt/app/sc_testapi /app/volumes/config:/usr/share/nginx/html/config \

mytestapi

注意:端口: 映射宿主機(jī)8064端口到容器的80端口。(因此處nginx默認(rèn)80)

-v 掛載配置文件容达。宿主服務(wù)器主機(jī)目錄:容器目錄

mytestapi 鏡像名稱

  1. 查看鏡像

docker images

  1. 刪除鏡像

docker rmi 鏡像ID

  1. 查看容器

docker ps -a (查看所有容器)

docker ps (查看運(yùn)行中容器)

  1. 刪除容器

docker rm 容器ID

  1. 停止容器

docker stop 容器ID

  1. 啟動(dòng)容器

docker start 容器ID

  1. 重啟容器

docker restart 容器ID

  1. 打包鏡像并下載

保存:

docker save b1370b8cdc8c> /root/myyewuxitong-save-0523.tar

下載:

sz myyewuxitong-save-0523.tar

  1. 進(jìn)入運(yùn)行中容器

docker exec-it 容器ID /bin/bash

docker exec-it 容器ID bash

docker exec-it 容器ID sh 具體docker相關(guān)常用知識(shí)自行學(xué)些

五古涧、Harbor鏡像倉(cāng)庫(kù)

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市花盐,隨后出現(xiàn)的幾起案子蒿褂,更是在濱河造成了極大的恐慌,老刑警劉巖卒暂,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啄栓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡也祠,警方通過(guò)查閱死者的電腦和手機(jī)昙楚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)诈嘿,“玉大人堪旧,你說(shuō)我怎么就攤上這事〗毖牵” “怎么了淳梦?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)昔字。 經(jīng)常有香客問(wèn)我爆袍,道長(zhǎng),這世上最難降的妖魔是什么作郭? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任陨囊,我火速辦了婚禮,結(jié)果婚禮上夹攒,老公的妹妹穿的比我還像新娘蜘醋。我一直安慰自己,他們只是感情好咏尝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布压语。 她就那樣靜靜地躺著,像睡著了一般编检。 火紅的嫁衣襯著肌膚如雪胎食。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天蒙谓,我揣著相機(jī)與錄音斥季,去河邊找鬼训桶。 笑死累驮,一個(gè)胖子當(dāng)著我的面吹牛酣倾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谤专,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼躁锡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了置侍?” 一聲冷哼從身側(cè)響起映之,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜡坊,沒(méi)想到半個(gè)月后杠输,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秕衙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年蠢甲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片据忘。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹦牛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勇吊,到底是詐尸還是另有隱情曼追,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布汉规,位于F島的核電站礼殊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏针史。R本人自食惡果不足惜膏燕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悟民。 院中可真熱鬧坝辫,春花似錦、人聲如沸射亏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)智润。三九已至及舍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窟绷,已是汗流浹背锯玛。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人攘残。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓拙友,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親歼郭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遗契,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容