我有一个问题:我如何在Docker构建中创建requirements.txt
文件,这样我就不必在项目目录中手动更新它,同时发布新版本的应用程序?
所以,我想要的基本上是在Docker构建中构建requirements.txt
文件,然后安装它。
我Dockerfile
FROM --platform=arm64 python:3.9-buster
# Initializing Project Directory
CMD mkdir /project/dir/
# Setting up working directory
WORKDIR /project/dir/
ENV PYTHONUNBUFFERED=1
RUN pip install --upgrade pip
RUN pip freeze > requirements.txt
ADD ./requirements.txt ./requirements.txt # error occurs at this line
COPY . .
RUN pip install -r requirements.txt
RUN chmod +x ./run.sh
ENTRYPOINT ["sh", "./run.sh"]
但不幸的是有一个错误发生:failed to compute cache key: "/requirements.txt" not found: not found
.
你对实现有什么建议吗?
我相信你必须在freeze冻结它们之前将依赖项安装到你的环境中。
所以要么,
在项目目录中运行pip freeze
(首选)
然后在dockerfile中执行pip install -r requirements.txt
而不是pip freeze
或者添加pip install x
,其中X是每个依赖项,然后冻结。
做第二个选项会有点"奇怪"。考虑到您通常希望首先构建深度列表,然后将其提供给构建环境。不是构建深度列表,而是顺序构建。