经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Docker » 查看文章
docker 通过中间镜像加速部署
来源:cnblogs  作者:wang_yb  时间:2019/6/13 8:46:16  对本文有异议

概要

使用 docker 打包镜像的时候, 每次耗费时间最多的就是 docker build 的过程. 特别是对于前端工程的打包, 有时候下载依赖包的时间就要 10 几分钟, 这就导致发布版本的效率极低.

针对前端工程的打包慢的问题, 目前能想到的有效解决办法就是, 在官方 node 的镜像基础上, 把当前项目用到的 packages 下载好再做个镜像用于编译前端工程用.

实施

根据上面的方案, 尝试如下.

修改前的实施时间

修改前, 是在 node 镜像中编译前端, 然后将编译之后的代码放入后端的静态文件目录中.

  1. FROM node:10.15-alpine as front-builder
  2. WORKDIR /user
  3. ADD ./frontend/application .
  4. RUN yarn # 这一步耗费的时间最长
  5. RUN yarn build
  6. FROM golang:1.12.5-alpine3.9 as back-builder
  7. WORKDIR /go
  8. RUN mkdir -p ./src/xxx
  9. ADD ./backend/src/xxx ./src/xxx
  10. RUN go install xxx
  11. FROM golang:1.12.5-alpine3.9
  12. WORKDIR /app
  13. COPY --from=front-builder /user/build ./public
  14. COPY --from=back-builder /go/bin/xxx .
  15. CMD ["./xxx"]

这种方式的编译时间如下:

  1. real 14m27.639s
  2. user 0m0.812s
  3. sys 0m0.108s

制作编译用的镜像

前端编译用的镜像 Dockerfile 如下:

  1. FROM node:10.15-alpine
  2. WORKDIR /user
  3. ADD ./frontend/application .
  4. RUN yarn
  5. RUN cd ..
  6. RUN rm -rf user

docker build 命令: ( 目录结构根据具体的项目调整 )

  1. # 这里的 Dockerfile 就是上面的内容, 编译后会生成名称为 node-application-cache 的 image
  2. docker build -f ./Dockerfile -t node-application-cache .

测试修改后的实施时间

dockerfile 和修改前的基本一样, 只改了第一行

  1. # FROM node:10.15-alpine as front-builder
  2. FROM node-application-cache:latest as front-builder

编译时间如下:

  1. real 1m17.399s
  2. user 0m0.836s
  3. sys 0m0.136s

使用了带前端缓存的 image, 整体时间缩短了 14 倍左右 中途编译用的镜像(node-application-cache)比之前的(node:10.15-alpine)大很多, 但是最终发布的镜像还是一样大.

原文链接:http://www.cnblogs.com/wang_yb/p/11013550.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号