考慮下每次 CI 部署的流程

  1. 在構建服務器構建鏡像
  2. 把鏡像推至鏡像倉庫服務器,
  3. 在生產服務器拉取鏡像,啟動容器

顯而易見,鏡像體積過大造成傳輸效率低下,增加每次部署的延時。

即使,構建服務器與生產服務器在同一節點下,沒有延時的問題。減少鏡像體積也能夠節省磁盤空間

關于鏡像體積的過大,很大一部分是因為node_modules 臭名昭著的體積

但最后我們只需要 public 文件夾下的內容,對于源文件以及node_modules下文件,占用體積過大且不必要,造成浪費。
此時可以利用 Docker 的多階段構建,僅來提取編譯后文件

參考官方文檔 https://docs.docker.com/develop/develop-images/multistage-build/

FROM node:alpine as builder

ENV PROJECT_ENV production

# http-server 不變動也可以利用緩存
WORKDIR /code

ADD package.json /code
RUN npm install --production

ADD . /code
RUN npm run build

# 選擇更小體積的基礎鏡像
FROM nginx:alpine
COPY --from=builder /code/public /usr/share/nginx/html

此時,鏡像體積從 1G+ 變成了 50M+

使用 CDN

分析一下 50M+ 的鏡像體積,nginx:alpine 的鏡像是16M,剩下的40M是靜態資源。

如果把靜態資源給上傳到 CDN,則沒有必要打入鏡像了,此時鏡像大小會控制在 20M 以下

關于靜態資源,可以分類成兩部分

FROM node:alpine as builder

ENV PROJECT_ENV production

# http-server 不變動也可以利用緩存
WORKDIR /code

ADD package.json /code
RUN npm install --production

ADD . /code
# npm run uploadCdn 是把靜態資源上傳至 cdn 上的腳本文件
RUN npm run build && npm run uploadCdn


# 選擇更小體積的基礎鏡像
FROM nginx:alpine
COPY --from=builder code/public/index.html code/public/favicon.ico /usr/share/nginx/html/
COPY --from=builder code/public/static /usr/share/nginx/html/static
贊(4)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » 如何使用docker部署前端應用

登錄

找回密碼

注冊

主站蜘蛛池模板: 久久精品国产亚洲综合av| 四虎成人在线观看免费| 亚洲精品自拍视频在线看| 亚洲夂夂婷婷色拍ww47| 一 级做人爱全视频在线看| 好吊视频一区二区三区在线| 东京热人妻无码一区二区av| 国产成人亚洲精品自产在线| 精品一区二区中文字幕| 国精偷拍一区二区三区| 中文字幕色av一区二区三区| 在线播放国产精品亚洲| 最新亚洲av日韩av二区| 午夜毛片不卡免费观看视频| 国产三级精品三级在线观看| 色情一区二区三区免费看| 国产蜜臀精品一区二区三区| 中文国产不卡一区二区| 忘忧草在线社区www中国中文 | 91精品国产午夜福利| 伊人欧美在线| 久久精品国产亚洲av久| 免费无码一区无码东京热| 麻豆国产传媒精品视频| 亚洲午夜精品国产电影在线观看 | 蜜臀人妻精品一区二区免费| 蜜桃视频在线免费观看一区二区| 色九月亚洲综合网| 精品国产成人a在线观看 | 国产va免费精品观看精品| 好男人社区影视在线WWW| 亚洲无av在线中文字幕| 亚洲AV无码久久精品日韩| 国产极品精品自在线不卡| 国产精品无码aⅴ嫩草| 九九热在线视频免费播放| 天天澡日日澡狠狠欧美老妇 | 日韩视频一区二区三区视频| 国产亚洲一二三区精品| 人妻综合专区第一页| 免费观看国产女人高潮视频|