Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何强制docker build使用devpi server for pip安装命令?_Pip_Docker_Devpi - Fatal编程技术网

如何强制docker build使用devpi server for pip安装命令?

如何强制docker build使用devpi server for pip安装命令?,pip,docker,devpi,Pip,Docker,Devpi,我正在尝试使用docker build为基于flask的web应用程序构建一个映像。我的Dockerfile如下所示: FROM beehive-webstack:latest MAINTAINER Anuvrat Parashar <anuvrat@zopper.com> EXPOSE 5000 ADD . /srv/beehive/ RUN pip install -i http://localhost:4040/root/pypi/+simple/ -r /srv/beeh

我正在尝试使用docker build为基于flask的web应用程序构建一个映像。我的Dockerfile如下所示:

FROM beehive-webstack:latest
MAINTAINER Anuvrat Parashar <anuvrat@zopper.com>

EXPOSE 5000
ADD . /srv/beehive/

RUN pip install -i http://localhost:4040/root/pypi/+simple/ -r /srv/beehive/requirements.txt
来自蜂巢网站的
最新版本
维护者Anuvrat Parashar
曝光5000
加上/srv/蜂箱/
运行pip安装-ihttp://localhost:4040/root/pypi/+simple/-r/srv/beehive/requirements.txt
没有-i标志的pip安装可以工作,但是它从pypi下载所有东西,这自然是很慢的


问题是pip无法访问在我的笔记本电脑上运行的devpi服务器。我如何才能做到这一点呢?

localhost
指的是docker容器,而不是您的主机,因为
RUN
行只是容器中执行的命令。因此,您必须使用笔记本电脑的网络可访问IP


缺点:如果其他人没有运行pypi镜像,这会使Dockerfile不可移植。

一个答案是devpi助手容器。启动docker devpi映像并使其暴露端口3141。然后,您可以使用docker文件中的环境变量将其添加为pip安装的额外源

使用docker compose启动devpi:

devpi:
  image: scrapinghub/devpi
  container_name: devpi
  expose:
      - 3141
  volumes:
      - /path/to/devpi:/var/lib/devpi

myapp:
  build: .
  external_links:
   - devpi:devpi
docker compose up-d devpi

现在需要配置客户端docker容器。它需要配置pip:

在Dockerfile中: 环境PIP\u额外索引\u URL=\ PIP\u TRUSTED\u HOST=devpi

通过登录到您的容器来检查它是否正常工作:

docker compose运行myapp bash

pip安装——冗长的前端

输出应包括

  2 location(s) to search for versions of nose:
  * https://pypi.python.org/simple/nose/
  * http://devpi:3141/root/pypi/+simple/nose/
现在,您可以从另一个容器或sftp将包上载到您的容器中

这种方法的优点是加快构建速度,但如果没有devpi容器,则不会破坏它们


注意:在没有强密码的情况下,不要将端口发布到devpi,因为这是一个安全问题。人们可以使用它上传任意代码,应用程序将安装并执行这些代码。

构建docker文件时,这种方法有效吗?比如说安装docker build的需求
pip install-r requirements.txt-ihttp://devpi:3141/root/pypi/+简单——可信主机devpi-v
?您好,您能详细说明一下什么是网络可访问IP吗?