我有一个包,我想构建到一个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+
我做错了什么?
1条答案
按热度按时间4c8rllxm1#
首先,您需要将
other_module
添加到Docker镜像中。否则,pip install
命令将无法找到它。但是,根据文档,您可以ADD
Dockerfile目录之外的目录:路径必须在生成的上下文内;你不能ADD../something /something,因为docker构建的第一步是将context目录(和子目录)发送到docker守护进程。
因此,您必须将
other_module
目录移动到与Dockerfile相同的目录中,即你的结构应该像这样然后将以下内容添加到dockerfile:
WORKDIR
命令将您移动到/app
,因此下一步,RUN pip install...
将在/app
目录中执行。在app-directory中,现在可以使用目录../other_module