前端項(xiàng)目容器化(Docker)打包部署

前端項(xiàng)目容器化(Docker)打包部署

新建vue項(xiàng)目

  • 使用vue官方腳手架創(chuàng)建一個(gè)項(xiàng)目
    • 下面的demo使用默認(rèn)配置
  • 安裝依賴并運(yùn)行
# 使用vue腳手架創(chuàng)建項(xiàng)目
npm create vue@latest

# 進(jìn)入項(xiàng)目(假設(shè)項(xiàng)目名為"xxc-web")
cd xxc-web
# 安裝依賴
npm install
# 測試
npm run dev

手動(dòng)打包部署(舊方式)

  • 單機(jī)部署方式通常使用"npm run build"打包成靜態(tài)文件
    • 通常打包后文件在項(xiàng)目根目錄的"dist"目錄下
  • 將dist目錄的文件上傳服務(wù)器
  • 配置nginx漱凝,將某域名/端口號指向該目錄
  • 之后即可使用http://ip:port訪問

容器化(Docker)打包部署

打包配置

  • 根目錄新增"nginx.conf"文件
    • 為了解決部分框架部署后的路由問題
    • 如:該開始訪問一切正常最楷,但是使用瀏覽器刷新后疼电,報(bào)錯(cuò)404
  • 文件內(nèi)容如下:
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;

        # 新增下面這句,其他是默認(rèn)nginx配置
        # 解決部分前端框架的路由問題凿跳,在瀏覽器刷新報(bào)錯(cuò)404
        try_files $uri $uri/ /index.html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
  • 根目錄新增"Dockerfile"文件
    • 打包過程分為兩個(gè)階段
    • 第一階段:使用node鏡像安裝依賴并打包成靜態(tài)文件
    • 第二階段:將靜態(tài)文件放入nginx鏡像良拼,并修改配置
  • 文件內(nèi)容如下:
# 第一階段:node鏡像打包
FROM node:latest AS frontend-builder
WORKDIR /build-app
COPY . .
RUN npm install
RUN npm run build

# 第二階段:nginx打包
FROM nginx:latest
EXPOSE 80
WORKDIR /app
# 替換nginx配置
COPY nginx.conf /etc/nginx/conf.d/default.conf
# 將第一階段的靜態(tài)文件復(fù)制到nginx中
RUN rm -rf /usr/share/nginx/html
RUN mkdir /usr/share/nginx/html
COPY --from=frontend-builder /build-app/dist /usr/share/nginx/html

# 運(yùn)行
CMD ["nginx", "-g", "daemon off;"]

打包部署

  • 使用docker命令打包
    • 鏡像名稱為"xxc-web:v1"
  • 將鏡像上傳到docker倉庫或私有倉庫(Harbor)
  • 運(yùn)行容器
# 打包鏡像
docker build -t xxc-web:v1 . 

# 上傳倉庫
# docker login -u <用戶名> -p <密碼> <倉庫地址>
# docker push xxc-web:v1

# 運(yùn)行
docker run --name xxc-web -dp 1234:80 xxc-web:v1
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末就斤,一起剝皮案震驚了整個(gè)濱河市悍募,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洋机,老刑警劉巖坠宴,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異绷旗,居然都是意外死亡喜鼓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門衔肢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庄岖,“玉大人,你說我怎么就攤上這事膀懈《倜蹋” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵启搂,是天一觀的道長硼控。 經(jīng)常有香客問我,道長胳赌,這世上最難降的妖魔是什么牢撼? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮疑苫,結(jié)果婚禮上熏版,老公的妹妹穿的比我還像新娘纷责。我一直安慰自己,他們只是感情好撼短,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布再膳。 她就那樣靜靜地躺著,像睡著了一般曲横。 火紅的嫁衣襯著肌膚如雪喂柒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天禾嫉,我揣著相機(jī)與錄音灾杰,去河邊找鬼。 笑死熙参,一個(gè)胖子當(dāng)著我的面吹牛艳吠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播孽椰,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼昭娩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弄屡?” 一聲冷哼從身側(cè)響起题禀,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膀捷,沒想到半個(gè)月后迈嘹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡全庸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年秀仲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壶笼。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡神僵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出覆劈,到底是詐尸還是另有隱情保礼,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布责语,位于F島的核電站炮障,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏坤候。R本人自食惡果不足惜胁赢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望白筹。 院中可真熱鬧智末,春花似錦谅摄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至由蘑,卻和暖如春螺男,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纵穿。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奢人,地道東北人谓媒。 一個(gè)月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像何乎,于是被迫代替她去往敵國和親句惯。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

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