我有个问题:如何在Docker内部版本中创建requirements.txt
文件,以便在发布新版本的应用程序时不必在项目目录中手动更新?
因此,我想要做的基本上是在Docker构建内部构造requirements.txt
文件,然后安装它。
我的停靠文件
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
.
你对实施有什么建议吗?
1条答案
按热度按时间a8jjtwal1#
我相信您必须在freeze真正冻结依赖项之前将其安装到您的环境中。
所以要么,
在项目目录中运行
pip freeze
(首选)然后在停靠文件中执行
pip install -r requirements.txt
而不是pip freeze
或者添加
pip install x
,其中X是每个依赖项,然后冻结。考虑到您通常希望首先构建dep列表,然后将其提供给您的构建环境,而不是构建dep列表并按顺序进行构建,因此执行第二个选项可能有点“奇怪”。