概要
使用 docker 打包鏡像的時(shí)候, 每次耗費(fèi)時(shí)間最多的就是docker build的過程. 特別是對(duì)于前端工程的打包, 有時(shí)候下載依賴包的時(shí)間就要 10 幾分鐘, 這就導(dǎo)致發(fā)布版本的效率極低.
針對(duì)前端工程的打包慢的問題, 目前能想到的有效解決辦法就是, 在官方 node 的鏡像基礎(chǔ)上, 把當(dāng)前項(xiàng)目用到的 packages 下載好再做個(gè)鏡像用于編譯前端工程用.
實(shí)施
根據(jù)上面的方案, 嘗試如下.
修改前的實(shí)施時(shí)間
修改前, 是在 node 鏡像中編譯前端, 然后將編譯之后的代碼放入后端的靜態(tài)文件目錄中.
FROM node:10.15-alpine as front-builder WORKDIR /user ADD ./frontend/application . RUN yarn # 這一步耗費(fèi)的時(shí)間最長 RUN yarn build FROM golang:1.12.5-alpine3.9 as back-builder WORKDIR /go RUN mkdir -p ./src/xxx ADD ./backend/src/xxx ./src/xxx RUN go install xxx FROM golang:1.12.5-alpine3.9 WORKDIR /app COPY --from=front-builder /user/build ./public COPY --from=back-builder /go/bin/xxx . CMD ["./xxx"]
這種方式的編譯時(shí)間如下:
real 14m27.639s user 0m0.812s sys 0m0.108s
制作編譯用的鏡像
前端編譯用的鏡像 Dockerfile 如下:
FROM node:10.15-alpine WORKDIR /user ADD ./frontend/application . RUN yarn RUN rm -rf `grep -v "node_modules" | grep -v "yarn.lock"`
docker build 命令: ( 目錄結(jié)構(gòu)根據(jù)具體的項(xiàng)目調(diào)整 )
# 這里的 Dockerfile 就是上面的內(nèi)容, 編譯后會(huì)生成名稱為 node-application-cache 的 image docker build -f ./Dockerfile -t node-application-cache .
測試修改后的實(shí)施時(shí)間
dockerfile 和修改前的基本一樣, 只改了第一行
# FROM node:10.15-alpine as front-builder FROM node-application-cache:latest as front-builder
編譯時(shí)間如下:
real 1m17.399s user 0m0.836s sys 0m0.136s
使用了帶前端緩存的 image, 整體時(shí)間縮短了 14 倍左右 中途編譯用的鏡像(node-application-cache)比之前的(node:10.15-alpine)大很多, 但是最終發(fā)布的鏡像還是一樣大.
鏈接:https://www.cnblogs.com/wang_yb/p/11013550.html
-
命令
+關(guān)注
關(guān)注
5文章
687瀏覽量
22053 -
鏡像
+關(guān)注
關(guān)注
0文章
168瀏覽量
10769 -
Docker
+關(guān)注
關(guān)注
0文章
477瀏覽量
11871
原文標(biāo)題:實(shí)施
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論