社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

多级Docker构建的工件缓存

Pavel • 4 年前 • 820 次点击  

我有这样的码头工人

# build-home
FROM node:10 AS build-home
WORKDIR /usr/src/app
COPY /home/package.json /home/yarn.lock /usr/src/app/
RUN yarn install
COPY ./home ./
RUN yarn build

# build-dashboard
FROM node:10 AS build-dashboard
WORKDIR /usr/src/app
COPY /dashboard/package.json /dashboard/yarn.lock /usr/src/app/
RUN yarn install
COPY ./dashboard ./
RUN yarn build

# run
FROM nginx
EXPOSE 80
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=build-home /usr/src/app/dist /usr/share/nginx/html/home
COPY --from=build-dashboard /usr/src/app/dist /usr/share/nginx/html/dashboard

这里构建两个react应用程序,然后将构建的工件放入nginx。为了提高构建性能,我需要缓存 dist 文件夹 build-home build-dashboard 构建阶段。 为此我创建了一个 volume 在里面 docker-compose.yml

...
  web:
    container_name: web
    build:
      context: ./web
    volumes:
      - ./web-build-cache:/usr/src/app
    ports:
      - 80:80
    depends_on:
      - api

我在这个阶段停了下来,因为我不明白怎么加 体积 创建者 docker-compose 第一个是 建造家园 阶段,添加后 体积 构建仪表板 . 也许我应该创建一个两个卷,并将每个卷附加到每个构建阶段,但是如何做到这一点呢?

更新:

Initial build.

家庭应用程序:

  1. 安装模块:100.91S
  2. 构建应用程序:39.51s

仪表板应用程序:

  1. 安装模块:100.91S
  2. 构建应用程序:50.38s

总时间:

real    8m14.322s
user    0m0.560s
sys     0m0.373s

Second build (无代码或依赖项更改):

家庭应用程序:

  1. 安装模块:使用缓存
  2. 构建应用:使用缓存

仪表板应用程序:

  1. 安装模块:使用缓存
  2. 构建应用:使用缓存

总时间:

real    0m2.933s
user    0m0.309s
sys     0m0.427s

Third build (第一个应用程序中的代码变化很小):

家庭应用程序:

  1. 安装模块:使用缓存
  2. 构建应用程序:50.04s

仪表板应用程序:

  1. 安装模块:使用缓存
  2. 构建应用:使用缓存

总时间:

real    0m58.216s
user    0m0.340s
sys     0m0.445s

Initial build 无Docker的家庭应用:89.69s

real    1m30.111s
user    2m6.148s
sys     2m17.094s

Second build 没有Docker的家庭应用程序 迪特 文件夹存在于磁盘上(无代码或依赖项更改):18.16s

real    0m18.594s
user    0m20.940s
sys     0m2.155s

Third build 没有Docker的家庭应用程序 文件夹存在于磁盘上(代码变化很小):20.44s

real    0m20.886s
user    0m22.472s
sys     0m2.607s

在Docker容器中,应用程序的第三次构建要长2倍。这表明,如果第一次生成的结果在磁盘上,则其他生成的完成速度更快。在Docker容器中,第一个之后的所有程序集只要第一个就执行,因为没有 迪特 文件夹。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38672
 
820 次点击  
文章 [ 2 ]  |  最新文章 4 年前