我目前正在尝试安装 Python 包作为 Docker 构建的一部分。此 Python 包使用 setup.cfg 来存储其依赖项的元数据。通过requirements.txt,我可以使用以下内容来缓存依赖项的安装:
\nCOPY requirements.txt /app\nRUN pip install -r requirements.txt\nRun Code Online (Sandbox Code Playgroud)\n但这段代码是一个可通过 pip 安装的 Python 包,它将依赖信息存储在 setup.cfg 中,目录结构如下:
\ntree -L 2 .\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mypy.ini\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.cfg\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tox.ini\n\nRun Code Online (Sandbox Code Playgroud)\n然后安装如下:
\nCOPY common /deps/common\nRUN pip install file:///deps/common\nRun Code Online (Sandbox Code Playgroud)\n不幸的是,这不再缓存需求的安装,因此任何代码更改现在都必须每次都获取并重新安装 python 包依赖项。如何以 docker 可以理解的方式缓存 setup.cfg 指定的依赖安装?
\n对于包含buildkit的新版本 Docker(例如 Docker 23),您可以在 Dockerfile 中指定本地缓存命令,如下所示:pip
RUN --mount=type=cache,target=/root/.cache pip install -r ./requirements.txt
Run Code Online (Sandbox Code Playgroud)
第一次构建 docker 容器后,通过 pip 下载的文件将缓存在本地文件系统中,由于下载较少,后续的 docker 构建速度会更快。
此外,您的 docker 容器将会更小,因为 pip 下载的文件不会包含在 docker 镜像中。
| 归档时间: |
|
| 查看次数: |
411 次 |
| 最近记录: |