概要

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

docker 通过中间镜像加速部署的更多相关文章

  1. Docker 中国官方镜像加速

    参考:https://www.docker-cn.com/registry-mirror 通过 Docker 官方镜像加速,中国区用户能够快速访问最流行的 Docker 镜像.该镜像托管于中国大陆,本 ...

  2. Docker拉取镜像加速

    关于Docker拉取镜像加速 打开桌面 docker 小图标 选中框框 根据下图 添加国内的加速源即可 Docker加速源 #网易 http://hub-mirror.c.163.com #Docke ...

  3. docker 基础之镜像加速

    国内访问 Docker Hub 有时会遇到困难,此时可以配置镜像加速器 对于使用 systemd 的系统,用 systemctl enable docker 启用服务后,编辑 /etc/systemd ...

  4. Docker安装Tomcat镜像并部署web项目

    一.安装Tomcat 1.查找Docker Hub上的tomcat镜像 docker search tomcat 2.拉取官方的镜像 docker pull tomcat 等待下载完毕,需要一些时间. ...

  5. Docker 02 - 向 Docker 的 Tomcat 镜像中部署 Web 应用

    目录 1 下载 Docker 镜像 2 部署Web项目 2.1 通过Dockerfile自定义项目镜像 2.2 启动自定义镜像, 生成一个容器 2.3 另一种启动方式: 交互式启动 3 (附) 向镜像 ...

  6. ubuntu 安装 docker 并配置镜像加速(使用 apt-get 进行安装)

    ubuntu 安装docker CentOS docker安装 https://blog.csdn.net/weixin_44953227/article/details/108597310 你需要这 ...

  7. Docker | 制作tomcat镜像并部署项目

    本文讲解如何制作自己的tomcat镜像,并使用tomcat部署项目 原料准备: tomcat.jdk安装包,dockerfile文件 步骤 1.准备压缩包 jdk-8u301-linux-x64.ta ...

  8. 使用阿里云对docker拉取镜像加速

    使用docker的时候,总是需要去search镜像,使用国外的源下载太慢,还有诸多的限制,无意中发现可以使用阿里云进行加速,实测有用,废话少说,操作如下: 1.打开阿里云控制台,没有的可以用淘宝账号或 ...

  9. docker使用国内镜像加速

    在daemon.json文件里以下国内镜像 { "registry-mirrors": [ "https://registry.docker-cn.com", ...

随机推荐

  1. 打印对象(__str__()和__repr__())

    当打印一个类的实例时,返回的字符串是对象的地址信息,如<__main__.Student object at 0x109afb310>,很不好看 可通过在类内定义__str__(),这样打 ...

  2. 创建workbook及相关操作

    通过openpyxl模块创建workbook时,无需本地事先创建好excel,它会直接创建一个新的excel文件 创建workbook时,会至少包含一个worksheet 注意:openpyxl模块只 ...

  3. ASP.NET Core 如何用 Cookie 来做身份验证

    前言 本示例完全是基于 ASP.NET Core 3.0.本文核心是要理解 Claim, ClaimsIdentity, ClaimsPrincipal,读者如果有疑问,可以参考文章 理解ASP.NE ...

  4. 在 ASP.NET Core 中使用 ApplicationPart 的简单示例

    1. 项目截图: 2. 代码 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFra ...

  5. Pycharm 疑难杂症

    1. Pycharm报错:AttributeError: 'NoneType' object has no attribute 'get'的解决办法 https://blog.csdn.net/fre ...

  6. HTTP Error 500.35 - ANCM Multiple In-Process Applications in same Process

    vs2019   win10 情况:报错 HTTP Error 500.35 - ANCM Multiple In-Process Applications in same Process 微软官方解 ...

  7. Android studio down 的项目中文出现 乱码

    发现down的项目file->open找到文件夹打开,里面少很多东西,像build.grade(好像拼错了). 这个问题是要file->import progect找到文件夹打开,as会自 ...

  8. 权限管理——ACL权限

    权限管理 ACL权限 用于解决用户对文件身份不足 命令:[root@localhost ~]#dumpe2fs -h /dev/sd3 作用:查询指定分区详细的文件系统给信息 选项 -h:仅显示超级块 ...

  9. SourceInsight教程

    概述: Source Insight是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C++, C#和Java等程序的分析.Source Insight能分析你的源代码并在你工作的同时动态 ...

  10. 一文解读AI芯片之间的战争 (转)

    2015年的秋天,北京的雨水比往年要多些,温度却不算太冷.这一年里,年仅23岁的姚颂刚刚拿到清华大学的毕业证书;32岁的陈天石博士毕业后已在中科院计算所待了整整8年;而在芯片界摸爬滚打了14年的老将何 ...