首页 > 其他分享 >让Dockerfile里的包管理器也用上缓存

让Dockerfile里的包管理器也用上缓存

时间:2023-03-17 19:33:41浏览次数:49  
标签:缓存 requirements RUN cache pip 管理器 txt Dockerfile

问题

FROM python:3.9
COPY requirements.txt .
RUN pip install -r requirements.txt

当使用类似以上的 Dockerfile 来构建镜像,无论是第几次构建镜像pip都要重新下载 requirements.txt 中的所有依赖,这很费时间。理想方案是,除了第一次构建,后续的构建只有当requirements.txt中新增依赖时pip才去从互联网上下载内容,否则直接使用本机 Docker 中缓存的依赖(之前构建时产生的)。

解决方案

RUN 命令支持一个选项 --mount=type=cache,可以挂载一个临时目录来为编译器和包管理器缓存目录。

先决条件

为了开启 Docker Buildkit 功能,终端执行 export DOCKER_BUILDKIT=1 命令。

Dockerfile

上面的 Dockerfile 改写成如下形式:

# syntax=docker/dockerfile:1.3
FROM python:3.9
COPY requirements.txt .
RUN --mount=type=cache,target=/root/.cache \
    pip install -r requirements.txt

上面的 # syntax=docker/dockerfile:1.3BuildKit Dockerfile frontend 需要的。

参考


image

标签:缓存,requirements,RUN,cache,pip,管理器,txt,Dockerfile
From: https://www.cnblogs.com/fengyinxu/p/docker-run-mount-cache.html

相关文章