【发布时间】:2022-01-04 08:55:16
【问题描述】:
FROM python:3.9
WORKDIR /code
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY ./app /code/app
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
当我们在同一台机器上多次运行它时,我的理解是对于RUN pip install,将使用缓存的 docker 层,除非我们更改requirements.txt。但是,如果是一台没有层缓存的新机器和一些新发布的包,相同的 Dockerfile 会导致安装不同的包,对吗?
如果是,确保最佳做法是什么
- 可重现的构建
- 使用 docker 层缓存快速构建
- 使用最新的可用软件包?
我可以设想使用例如pip-compile --update 来自 pip-tools 可能会有所帮助,但对 docker 如何缓存文本文件了解太少。
【问题讨论】:
-
我在
pip freeze周围写了一个食谱来回应It keeps using the cache whereas a new version in available;这对你有帮助吗?我建议使用setup.cfg列出广泛的版本约束(“最新可用”),然后使用pip freeze生成具有确切已知工作版本(“可重复构建”)的requirements.txt文件。
标签: python docker pip dockerfile pip-tools