如何使用pip安装本地包作为docker构建的一部分?

0ve6wy6x  于 2023-06-05  发布在  Docker
关注(0)|答案(1)|浏览(193)

我有一个包,我想构建到一个docker镜像中,它依赖于我系统上的一个相邻包。
我的requirements.txt看起来像这样:

-e ../other_module
numpy==1.0.0
flask==0.12.5

当我在virtualenv中调用pip install -r requirements.txt时,它工作得很好。但是,如果我在Dockerfile中调用它,例如:

ADD requirements.txt /app
RUN pip install -r requirements.txt

然后使用docker build .运行,我得到一个错误,如下所示:
../other_module should either be a path to a local project or a VCS url beginning with svn+, git+, hg+, or bzr+
我做错了什么?

4c8rllxm

4c8rllxm1#

首先,您需要将other_module添加到Docker镜像中。否则,pip install命令将无法找到它。但是,根据文档,您可以ADD Dockerfile目录之外的目录:
路径必须在生成的上下文内;你不能ADD../something /something,因为docker构建的第一步是将context目录(和子目录)发送到docker守护进程。
因此,您必须将other_module目录移动到与Dockerfile相同的目录中,即你的结构应该像这样

.
├── Dockerfile
├── requirements.txt
├── other_module
|   ├── modue_file.xyz
|   └── another_module_file.xyz

然后将以下内容添加到dockerfile:

ADD /other_module /other_module
ADD requirements.txt /app
WORKDIR /app
RUN pip install -r requirements.txt

WORKDIR命令将您移动到/app,因此下一步,RUN pip install...将在/app目录中执行。在app-directory中,现在可以使用目录../other_module

相关问题