Pip 编译为 dockerfile 的一部分 - 向需求添加新条目的最快方法.txt



我正在使用这个Dockerfile作为这个docker compos文件的一部分。

现在,每次我想添加新的 pip 要求时,我都会停止我的容器,添加新的 pip 要求,运行 docker-compose -f local.yml build ,然后用 docker-compose -f local.yml up 重新启动容器。这需要很长时间,如果我只是添加一个 pip 依赖项,它甚至看起来像是在重新编译 Postgres 的容器。

将单个 pip 依赖项添加到容器的最快方法是什么?

这与 Docker 构建缓存失效有关。编辑requirements.txt时,步骤 RUN pip install --no-cache-dir -r /requirements/production.txt 和 Dockerfile 中的所有后续指令将失效。因此,它们被重新执行。

最佳做法是尽可能避免使生成缓存失效。这是通过将经常更改的步骤移动到 Dockerfile 的底部来实现的。您可以编辑 Dockerfile,并在开发时添加单独的 pip 安装步骤。

...
USER django
WORKDIR /app
pip install --no-cache-dir <new package>
pip install --no-cache-dir <new package2>
...

一旦您确定了所需的所有依赖项,请将它们添加到需求文件中。这样,您可以避免在早期使构建缓存失效,并且只从在 ward 上安装新包开始构建步骤。