如何强制docker build使用devpi server for pip安装命令?
我正在尝试使用docker build为基于flask的web应用程序构建一个映像。我的Dockerfile如下所示:如何强制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
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吗?