/data/container/nginx/html目錄,因?yàn)橐l(fā)布的靜" />

AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

【微服務(wù)部署】Jenkins+Docker一鍵打包部署Vue項(xiàng)目步驟詳解

來源: 責(zé)編: 時間:2023-09-18 21:41:36 263觀看
導(dǎo)讀一、服務(wù)器環(huán)境配置?前面說明了服務(wù)器Nginx的安裝和配置,這里稍微有些不同,但是因?yàn)榇宋氖怯肗ginx鏡像和前端鏡像頁面同時部署的方式來打包發(fā)布的,所以這里不再需要建立
/data/container/nginx/html目錄,因?yàn)橐l(fā)布的靜

yGV28資訊網(wǎng)——每日最新資訊28at.com

一、服務(wù)器環(huán)境配置

?前面說明了服務(wù)器Nginx的安裝和配置,這里稍微有些不同,但是因?yàn)榇宋氖怯肗ginx鏡像和前端鏡像頁面同時部署的方式來打包發(fā)布的,所以這里不再需要建立
/data/container/nginx/html目錄,因?yàn)橐l(fā)布的靜態(tài)頁面已經(jīng)在Nginx鏡像中的/nginx/html目錄了。這里也減少了手動部署安裝Nginx的步驟,而是在Jenkins任務(wù)中調(diào)用shell命令自動執(zhí)行安裝。
yGV28資訊網(wǎng)——每日最新資訊28at.com

1、新建Dockerfile文件,用于定義Nginx鏡像,及將打包成功的靜態(tài)文件復(fù)制到鏡像中,此文件放在前端項(xiàng)目的根目錄下,Jenkins打包時會從此處查找Dockerfile文件。

FROM nginx:latest# 維護(hù)者信息MAINTAINER gitegg# 將生成的靜態(tài)頁面文件復(fù)制到nginx的/usr/share/nginx/html/目錄COPY dist/ /usr/share/nginx/html/# 容器啟動時運(yùn)行的命令CMD ["nginx", "-g", "daemon off;"]

2、部署及備份目錄準(zhǔn)備

  • 新建 /opt/tmp 目錄,用于Jenkins打包后,通過 Publish Over SSH插件將包傳輸?shù)椒?wù)器的臨時目錄(如果前面創(chuàng)建過,這里無需再創(chuàng)建)。
  • 新建 /opt/bak 目錄,用于存儲所有部署過的包備份,方便后續(xù)版本回滾。此目錄可能會占用很大空間,所以需要選擇一個磁盤空間大的掛載目錄(如果前面創(chuàng)建過,這里無需再創(chuàng)建)。
  • 新建 /opt/script 目錄,用于Jenkins將包傳輸完成之后,執(zhí)行安裝、備份操作的相關(guān)命令腳本(如果前面創(chuàng)建過,這里無需再創(chuàng)建)。
  • 新建 /data/container/nginx/www,映射Nginx容器內(nèi)的/var/www目錄。
  • 新建 /data/container/nginx/logs,映射Nginx容器內(nèi)的/var/log/nginx目錄,存放nginx運(yùn)行日志。
  • 新建 /data/container/nginx/etc,映射Nginx容器內(nèi)的/etc/nginx目錄
  • 新建 /data/container/nginx/etc/nginx.conf,映射Nginx容器內(nèi)的/etc/nginx/nginx.conf配置文件
mkdir -p /opt/tmp /opt/bak /opt/script /data/container/nginx/www /data/container/nginx/logs  /data/container/nginx/etcchmod -R 777 /opt/tmp /opt/bak /opt/script /data/container/nginx/www /data/container/nginx/logs  /data/container/nginx/etc

3、根據(jù)系統(tǒng)部署要求編寫Nginx配置文件nginx.conf,以下是簡單的配置方法,正常情況下https請求還需要配置ssl證書,還有ipv6配置等,后面詳細(xì)講解Nginx配置。一定要將修改后的nginx.conf文件放到/data/container/nginx/etc/目錄下,否則nginx啟動時會報錯找不到配置文件。

server {        listen 80;        server_name  域名;        gzip on;        gzip_buffers 32 4K;        gzip_comp_level 6;        gzip_min_length 100;        gzip_types application/javascript text/css text/xml text/plain application/x-javascript image/jpeg image/gif image/png;        gzip_disable "MSIE [1-6]/.";         gzip_vary on;        #charset koi8-r;        access_log  /var/log/nginx/portal.access.log  main;        location / {                root /nginx/html/gitegg_portal;                try_files $uri $uri/ /index.html;                index  index.html index.htm;        }        location /gitegg-api/ {            proxy_set_header Host $http_host;                           proxy_set_header X-Real-Ip $remote_addr;            proxy_set_header REMOTE-HOST $remote_addr;            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            proxy_pass http://172.17.0.1:8080/;        }    }

4、部署腳本編寫說明

  • 定義入?yún)?,可以通過Jenkins任務(wù)將參數(shù)傳入腳本中,我們定義了下面7個參數(shù):
    container_name=portal-server : 容器名稱image_name=portal-server : 鏡像名稱version=latest : 鏡像版本portal_port=80: 宿主主機(jī)端口映射server_port=80: 容器內(nèi)服務(wù)端口portal_ssl_port=443: 宿主主機(jī)端口映射serve_sslr_port=443: 容器內(nèi)服務(wù)端口
  • 對參數(shù)進(jìn)行檢查,是否未傳入?yún)?shù),這里根據(jù)自己的實(shí)際情況判斷,比如必須傳入哪些參數(shù),就設(shè)置參數(shù)的個數(shù)不能小于幾。
echo "param validate"if [ $# -lt 1 ]; then  echo "you must use like this : ./publish_docker_portal.sh <container_name> <image_name> <version> [portal port] [server port] [portal ssl port] [server ssl port]"    exit  fi
  • 入?yún)①x值,如果有參數(shù)傳入,則取服務(wù)參數(shù),如果沒有參數(shù)傳入則取默認(rèn)值
if [ "$1" != "" ]; then   container_name="$1"fiecho "container_name=" $container_nameif [ "$2" != "" ]; then   image_name="$2"fiif [ "$3" != "" ]; then   version="$3"fiecho "version=" $versionif [ "$4" != "" ]; then   portal_port="$4"fiecho "portal_port=" $portal_portif [ "$5" != "" ]; then   server_port="$5"fiecho "server_port=" $server_portif [ "$6" != "" ]; then   portal_ssl_port="$6"fiecho "portal_ssl_port=" $portal_ssl_portif [ "$7" != "" ]; then   serve_sslr_port="$7"fiecho "serve_sslr_port=" $serve_sslr_port
  • 停止并刪除容器
echo "執(zhí)行docker ps"docker ps if [[ "$(docker inspect $container_name 2> /dev/null | grep $container_name)" != "" ]]; then   echo $container_name "容器存在,停止并刪除"  echo "docker stop" $container_name  docker stop $container_name  echo "docker rm" $container_name  docker rm $container_nameelse   echo $container_name "容器不存在"fi
  • 停止并刪除鏡像
# 刪除鏡像echo "執(zhí)行docker images"docker imagesif [[ "$(docker images -q $image_name 2> /dev/null)" != "" ]]; then   echo $image_name '鏡像存在,刪除鏡像'  docker rmi $(docker images -q $image_name 2> /dev/null) --forceelse   echo $image_name '鏡像不存在'fi
  • 備份本次安裝鏡像包
#bak imageecho "bak image" $image_nameBAK_DIR=/opt/bak/docker/$image_name/`date +%Y%m%d`mkdir -p "$BAK_DIR"cp "/opt/tmp/portal-image.tar" "$BAK_DIR"/"$image_name"_`date +%H%M%S`.tar
  • 執(zhí)行安裝鏡像包命令
echo "docker load" $image_namedocker load --input /opt/tmp/portal-image.tar
  • 執(zhí)行運(yùn)行命令
echo "docker run" $image_namedocker run -d -p $portal_port:$server_port -p $portal_ssl_port:$server_ssl_port --name=$container_name -e TZ="Asia/Shanghai" --restart=always -v /data/container/nginx/www:/var/www -v /data/container/nginx/logs:/var/log/nginx -v /data/container/nginx/etc:/etc/nginx -v /data/container/nginx/etc/nginx.conf:/etc/nginx/nginx.conf -v /etc/localtime:/etc/localtime -v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone -v /bxl/container/nginx/ssl:/nginx/ssl $image_name
  • 刪除安裝文件,因?yàn)榍懊嬉呀?jīng)備份過了,所以這里將臨時安裝文件刪除
echo "remove tmp " $image_namerm -rf /opt/tmp/portal-image.tar
  • 打印執(zhí)行完成的命令
echo "Docker Portal is starting,please try to access $container_name conslone url"
  • 完整的安裝部署腳本
container_name=portal-serverimage_name=portal-serverversion=latestportal_port=80server_port=80portal_ssl_port=443serve_sslr_port=443echo "param validate"if [ $# -lt 1 ]; then    echo "you must use like this : ./publish_docker_portal.sh <container_name> <image_name> <version> [portal port] [server port] [portal ssl port] [server ssl port]"    exit  fiif [ "$1" != "" ]; then   container_name="$1"fiecho "container_name=" $container_nameif [ "$2" != "" ]; then   image_name="$2"fiif [ "$3" != "" ]; then   version="$3"fiecho "version=" $versionif [ "$4" != "" ]; then   portal_port="$4"fiecho "portal_port=" $portal_portif [ "$5" != "" ]; then   server_port="$5"fiecho "server_port=" $server_portif [ "$6" != "" ]; then   portal_ssl_port="$6"fiecho "portal_ssl_port=" $portal_ssl_portif [ "$7" != "" ]; then   serve_sslr_port="$7"fiecho "serve_sslr_port=" $serve_sslr_portecho "執(zhí)行docker ps"docker ps if [[ "$(docker inspect $container_name 2> /dev/null | grep $container_name)" != "" ]]; then   echo $container_name "容器存在,停止并刪除"  echo "docker stop" $container_name  docker stop $container_name  echo "docker rm" $container_name  docker rm $container_nameelse   echo $container_name "容器不存在"fi# 刪除鏡像echo "執(zhí)行docker images"docker imagesif [[ "$(docker images -q $image_name 2> /dev/null)" != "" ]]; then   echo $image_name '鏡像存在,刪除鏡像'  docker rmi $(docker images -q $image_name 2> /dev/null) --forceelse   echo $image_name '鏡像不存在'fi#bak imageecho "bak image" $image_nameBAK_DIR=/opt/bak/docker/$image_name/`date +%Y%m%d`mkdir -p "$BAK_DIR"cp "/opt/tmp/portal-image.tar" "$BAK_DIR"/"$image_name"_`date +%H%M%S`.tarecho "docker load" $image_namedocker load --input /opt/tmp/portal-image.tarecho "docker run" $image_namedocker run -d -p $portal_port:$server_port -p $portal_ssl_port:$server_ssl_port --name=$container_name -e TZ="Asia/Shanghai" --restart=always -v /data/container/nginx/www:/var/www -v /data/container/nginx/logs:/var/log/nginx -v /data/container/nginx/etc:/etc/nginx -v /data/container/nginx/etc/nginx.conf:/etc/nginx/nginx.conf -v /etc/localtime:/etc/localtime -v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone -v /bxl/container/nginx/ssl:/nginx/ssl $image_nameecho "remove tmp " $image_namerm -rf /opt/tmp/portal-image.tarecho "Docker Portal is starting,please try to access $container_name conslone url"

二、新建Jenkins配置打包任務(wù),打包部署NodeJS(Vue)鏡像

1、新建任務(wù)前,安裝Docker Pipeline插件,使用Pipeline流水線任務(wù)構(gòu)建部署,安裝Jenkins插件相關(guān)內(nèi)容,請查看前面部署Jenkins相關(guān)文章。

yGV28資訊網(wǎng)——每日最新資訊28at.com

  • 流水線任務(wù)可以在右側(cè)顯示階段視圖

yGV28資訊網(wǎng)——每日最新資訊28at.com


yGV28資訊網(wǎng)——每日最新資訊28at.com

yGV28資訊網(wǎng)——每日最新資訊28at.com

6、構(gòu)建成功后,下方會給出構(gòu)建成功提示。

yGV28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-10462-0.html【微服務(wù)部署】Jenkins+Docker一鍵打包部署Vue項(xiàng)目步驟詳解

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 我們一起聊聊.NET 8 RC1

下一篇: 離譜!頂流游戲引擎新增斂財名目,Unity開發(fā)者徹底怒了!

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 影音體驗(yàn)是真的強(qiáng) 簡單聊聊iQOO Pad

    大公司的好處就是產(chǎn)品線豐富,非常細(xì)分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發(fā)布會上看到了iQOO的首款平板產(chǎn)品iQOO Pad。雖
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍(lán)牙耳機(jī)到筆記本電腦,紅米不知不覺之間也已經(jīng)形成了自己頗有競爭力的產(chǎn)品體系,在中端和次旗艦市場上甚至要比小米新機(jī)的表現(xiàn)來得更好,正所謂“大丈夫生居
  • 不容錯過的MSBuild技巧,必備用法詳解和實(shí)踐指南

    一、MSBuild簡介MSBuild是一種基于XML的構(gòu)建引擎,用于在.NET Framework和.NET Core應(yīng)用程序中自動化構(gòu)建過程。它是Visual Studio的構(gòu)建引擎,可在命令行或其他構(gòu)建工具中使用
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財經(jīng)(niudaocaijing)7月5日,企鵝FM發(fā)布官方公告稱由于業(yè)務(wù)調(diào)整,將于9月6日正式停止運(yùn)營,這意味著騰訊音樂長音頻業(yè)務(wù)走向消亡。騰訊在長音頻領(lǐng)域還在摸索。為
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業(yè) 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁&ldquo;充值中心&rdquo;入口上線了本機(jī)生活界面。壹覽商業(yè)發(fā)現(xiàn),該界面目前主要
  • 得物寵物生意「狂飆」,發(fā)力“它經(jīng)濟(jì)”

    作者|花花小萌主近日,得物宣布正式上線寵物鑒別,通過得物App內(nèi)的&ldquo;在線鑒別&rdquo;,可找到鑒別寵物的選項(xiàng)。通過上傳自家寵物的部位細(xì)節(jié),就能收獲擁有專業(yè)資質(zhì)認(rèn)證的得物鑒
  • 騰訊VS網(wǎng)易,最卷游戲暑期檔,誰能笑到最后?

    作者:無銹缽來源:財經(jīng)無忌7月16日晚,上海1862時尚藝術(shù)中心。伴隨著幻象的精準(zhǔn)命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰(zhàn)隊以絕對的優(yōu)勢戰(zhàn)勝了BLG戰(zhàn)隊,拿下了總決
  • 超閉合精工鉸鏈 徹底消滅縫隙 三星Galaxy Z Flip5與Galaxy Z Fold5發(fā)布

    2023年7月26日,三星電子正式發(fā)布了Galaxy Z Flip5與Galaxy Z Fold5。三星新一代折疊屏手機(jī)采用超閉合精工鉸鏈,讓折疊后的縫隙不再可見。同時,配合處
Top