概要
使用 docker 打包鏡像的時候, 每次耗費時間最多的就是docker build的過程. 特別是對于前端工程的打包, 有時候下載依賴包的時間就要 10 幾分鐘, 這就導致發布版本的效率極低.
針對前端工程的打包慢的問題, 目前能想到的有效解決辦法就是, 在官方 node 的鏡像基礎上, 把當前項目用到的 packages 下載好再做個鏡像用于編譯前端工程用.
實施
根據上面的方案, 嘗試如下.
修改前的實施時間
修改前, 是在 node 鏡像中編譯前端, 然后將編譯之后的代碼放入后端的靜態文件目錄中.
FROM node:10.15-alpine as front-builder WORKDIR /user ADD ./frontend/application . RUN yarn # 這一步耗費的時間最長 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"]
這種方式的編譯時間如下:
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 命令: ( 目錄結構根據具體的項目調整 )
# 這里的 Dockerfile 就是上面的內容, 編譯后會生成名稱為 node-application-cache 的 image docker build -f ./Dockerfile -t node-application-cache .
測試修改后的實施時間
dockerfile 和修改前的基本一樣, 只改了第一行
# FROM node:10.15-alpine as front-builder FROM node-application-cache:latest as front-builder
編譯時間如下:
real 1m17.399s user 0m0.836s sys 0m0.136s
使用了帶前端緩存的 image, 整體時間縮短了 14 倍左右 中途編譯用的鏡像(node-application-cache)比之前的(node:10.15-alpine)大很多, 但是最終發布的鏡像還是一樣大.
鏈接:https://www.cnblogs.com/wang_yb/p/11013550.html
-
命令
+關注
關注
5文章
687瀏覽量
22053 -
鏡像
+關注
關注
0文章
168瀏覽量
10769 -
Docker
+關注
關注
0文章
477瀏覽量
11871
原文標題:實施
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論