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-tools 中的 egpip-compile --update
可能会有所帮助,但对 docker 如何缓存文本文件了解得太少。