考慮下每次 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部署前端應用

登錄

找回密碼

注冊

主站蜘蛛池模板: 国产亚洲tv在线观看| 国产欧美激情一区二区三区| 久热在线中文字幕色999舞| 久久天天躁狠狠躁夜夜躁2012| 久久精品道一区二区三区| 亚洲一区蜜桃视频| 午夜寂寞视频无码专区| 亚洲一区二区av在线| 91丨九色丨人妻丨白浆| 成人无码在线视频区| 国产精品天堂蜜av在线播放| 亚洲欧美国产日韩天堂区| 亚洲成人夜色| 2929免费A级毛片无码| 永久免费av网站可以直接看的| 不卡的无码AV| 亚洲一起cao| 久久婷婷色综合五月天| 亚洲码与欧洲码区别入口| 1精品啪国产在线观看免费牛牛 | 类乌齐县| 人妻少妇精品无码专区app| 尤物国产精品福利在线网| 瑟瑟日韩无码| 777精品二区| 欧美乱妇日本无乱码特黄大片| 不卡一区二区三区在线视频| 国产精品毛片在线完整版SAB| 国产日韩在线视看高清视频手机 | 久久精品一本到99热免费| 日韩有码中文字幕av| 中文字幕人妻一区二区三区| 99RE8这里有精品热视频| 国产成人精品午夜2022| 亚洲av二区| 大渡口区| 亚洲国产精久久久久久久春色| 少妇熟女久久综合网色欲| 99自拍视频| 内射极品人妻| 中文字幕第9页|