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 cd ..
RUN rm -rf user

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

时间: 2024-08-29 17:43:06

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

Docker 中国官方镜像加速

参考:https://www.docker-cn.com/registry-mirror 通过 Docker 官方镜像加速,中国区用户能够快速访问最流行的 Docker 镜像.该镜像托管于中国大陆,本地用户现在将会享受到更快的下载速度和更强的稳定性,从而能够更敏捷地开发和交付 Docker 化应用. Docker 中国官方镜像加速可通过 registry.docker-cn.com 访问.该镜像库只包含流行的公有镜像.私有镜像仍需要从美国镜像库中拉取. 您可以使用以下命令直接从该镜像加速地址进行

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

一.安装Tomcat 1.查找Docker Hub上的tomcat镜像 docker search tomcat 2.拉取官方的镜像 docker pull tomcat 等待下载完毕,需要一些时间. 3.查看docker所有的镜像 docker images 4.启动tomcat镜像 注:前者是外围访问端口:后者是容器内部端口 docker run -d -p 8080:8080 tomcat 注:前者是外围访问端口:后者是容器内部端口 如下命令可后台启动tomcat -d: 后台运行容器,并

Kubernetes搭建过程中使用k8s.gcr.io、quay.io、docker.io的镜像加速

前言 因为众所周知的原因,在使用Kubernetes和docker的时候会出现一些镜像无法拉取或者速度较慢的情况,错误信息类似以下: [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-proxy:v1.17.3: output: Error response from daemon ... Failed to pull image "quay.io/coreos/flannel:v0.11.0-amd64": rpc err

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

1.打开阿里云控制台,没有的可以用淘宝账号或者支付宝账号直接登录 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 打开容器镜像服务,镜像加速器,复制加速地址后,按照第二个红框所示,完成配置. 2.重启docker systemctl daemon-reload systemctl restart docker OK!加速完成,嗖嗖嗖!!! 原文地址:https://www.cnblogs.com/xiaoyuxixi/p/1

Docker镜像加速

原文发表于cu:2016-05-31 本文属于重发,当前Daocloud设置镜像的方式就是一条命令:curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://xxxxxxxx.m.daocloud.io 墙内访问Docker Hub的速度太慢,daocloud mirror在国内做得是很不错的. 一.前置条件 1. 环境 Server:CentOS-7-x86_64-1511 Docker:1.11.1 2.

在Docker Hub上你可以很轻松下载到大量已经容器化的应用镜像,即拉即用——daocloud国内镜像加速

Docker之所以这么吸引人,除了它的新颖的技术外,围绕官方Registry(Docker Hub)的生态圈也是相当吸引人眼球的地方. 在Docker Hub上你可以很轻松下载到大量已经容器化的应用镜像,即拉即用.这些镜像中,有些是Docker官方维护的,更多的是众多开发者自发上传分享的.而且你还可以在Docker Hub中绑定你的代码托管系统(目前支持Github和Bitbucket)配置自动生成镜像功能,这样Docker Hub会在你代码更新时自动生成对应的Docker镜像,是不是很方便?

Docker镜像加速==》阿里云加速器

1.使用阿里云加速器加快获取docker官方的镜像 步骤一:如果没有阿里云账号,需要注册阿里云开发账号 https://dev.aliyun.com/ 步骤二:进入加速器页面获取加速信息 https://cr.console.aliyun.com/#/accelerator 原文地址:https://www.cnblogs.com/freeblogs/p/8215267.html

Docker Toolbox虚拟机文件地址修改 以及镜像加速

Docker Toolbox虚拟机文件地址修改  默认情况下,docker-machine创建的虚拟机文件,是保存在C盘的C:\Users\用户名\.docker\machine\machines\default 目录下的,如果下载和使用的镜像过多,那么必然导致该文件夹膨胀过大,如果C盘比较吃紧,那么我们就得考虑把该虚拟机移到另一个盘上.具体操作如下 powershell输入docker-machine stop default 停止虚拟机 打开VirtualBox,选择"管理"菜单下

Linux下docker配置镜像加速后重启docker服务失败

问题: docker配置镜像加速之后重启docker服务失败 安装好docker之后, 拉取镜像速度很慢, 甚至连接超时拉取不了, 所以更换镜像地址: #docker镜像加速器 #执行命令 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io 按照提示重启: 查看/etc/docker/daemon.json文件: 仔细观察多了一个逗号, 将逗号删除, 问题解决