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

登錄

找回密碼

注冊

主站蜘蛛池模板: 久久精品免视看国产成人| 国产女人被狂躁到高潮小说| 亚洲欧美日韩愉拍自拍美利坚| 四虎国产精品成人| 欧美成aⅴ人高清免费观看| 一本无码人妻在中文字幕免费| 日韩色区| 大陆一级毛片免费播放| 亚洲国产午夜成人福利AV| 无码人妻精品一区二区三| 国产欧亚州美日韩综合区| 欧美性猛交xxxx免费看| 亚洲自偷自偷在线成人网站传媒| 94人妻少妇偷人精品| 国产高清一区二区三区视频 | 国产日本一线在线观看免费| 中文字幕无码免费久久| 加勒比亚洲天堂午夜中文| 国产麻豆va精品视频| 精品无码专区久久久水蜜桃| 色婷婷亚洲婷婷7月| 国产一精品一av一免费| 欧美精品99久久久| 少妇久久久久久被弄高潮| 黑人巨茎大战欧美白妇| 精品国产av一二三四区| 未满十八18禁止免费无码网站| 97久久香蕉国产线看观看| 日韩精品有码中文字幕| 国产欧美久久一区二区| 999无码精品亚洲精品日韩人妻无码| 天天日夜夜摸| 精品中文字幕专区免费视频| 色狠狠色婷婷丁香五月| 日本精品视频| 亚洲色9在线| 国产真人做爰毛片视频直播| 久久99精品久久久久久琪琪| 亚洲中文字幕在线二页| 国产做a爱视频免费无遮挡| 女高中生自慰污污网站|