概要
使用 docker 打包鏡像的時候, 每次耗費(fèi)時間最多的就是docker build的過程. 特別是對于前端工程的打包, 有時候下載依賴包的時間就要 10 幾分鐘, 這就導(dǎo)致發(fā)布版本的效率極低.
針對前端工程的打包慢的問題, 目前能想到的有效解決辦法就是, 在官方 node 的鏡像基礎(chǔ)上, 把當(dāng)前項(xiàng)目用到的 packages 下載好再做個鏡像用于編譯前端工程用.
實(shí)施
根據(jù)上面的方案, 嘗試如下.
修改前的實(shí)施時間
修改前, 是在 node 鏡像中編譯前端, 然后將編譯之后的代碼放入后端的靜態(tài)文件目錄中.
FROM node:10.15-alpine as front-builder WORKDIR /user ADD ./frontend/application . RUN yarn # 這一步耗費(fèi)的時間最長 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 命令: ( 目錄結(jié)構(gòu)根據(jù)具體的項(xiàng)目調(diào)整 )
# 這里的 Dockerfile 就是上面的內(nèi)容, 編譯后會生成名稱為 node-application-cache 的 image docker build -f ./Dockerfile -t node-application-cache .
測試修改后的實(shí)施時間
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)大很多, 但是最終發(fā)布的鏡像還是一樣大.
鏈接:https://www.cnblogs.com/wang_yb/p/11013550.html
-
命令
+關(guān)注
關(guān)注
5文章
713瀏覽量
22531 -
鏡像
+關(guān)注
關(guān)注
0文章
175瀏覽量
10990 -
Docker
+關(guān)注
關(guān)注
0文章
499瀏覽量
12455
原文標(biāo)題:實(shí)施
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
構(gòu)建ARM64版本nacos docker鏡像
如何在RDKx3部署docker鏡像?
淺析Docker鏡像本地存儲機(jī)制及容器啟動原理
Docker—簡介與鏡像用法

Docker鏡像的詳細(xì)講解
減少docker鏡像大小的方法

docker 搜索鏡像,docker查看鏡像詳細(xì)信息(docker下載鏡像命令)
如何在Windows系統(tǒng)上設(shè)置Docker鏡像源
華為云 X 實(shí)例部署 Docker 應(yīng)用的性能評測優(yōu)化與實(shí)踐指南

Docker-鏡像的分層-busybox鏡像制作

評論