zoukankan      html  css  js  c++  java
  • docker 通过中间镜像加速部署

    概要

    使用 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)大很多, 但是最终发布的镜像还是一样大.

  • 相关阅读:
    Layui_2.x_上传插件使用
    Layui_1.0.9_分页实例_Java
    Jquery_如何扩展方法
    Linux_Crontab命令
    Linux_Centos7_设置MySql定时备份
    Linux_MySql_tar_安装(转)
    MySql_创建用户并赋予权限
    滚动条定位
    MySQL 存储过程创建表
    取两个时间差
  • 原文地址:https://www.cnblogs.com/wang_yb/p/11013550.html
Copyright © 2011-2022 走看看