gpt4 book ai didi

pip - 如何强制 docker build 使用 devpi 服务器进行 pip install 命令?

转载 作者:行者123 更新时间:2023-12-04 19:37:40 24 4
gpt4 key购买 nike

我正在尝试使用 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

pip install 没有 -i 标志可以工作,但它从 pypi 下载所有东西,这自然很慢。

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

最佳答案

一个答案是 devpi 辅助容器。您启动 docker devpi 镜像并让它公开端口 3141。然后您可以将其添加为使用 docker 文件中的环境变量进行 pip install 的额外源。

使用 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 中:
ENV PIP_EXTRA_INDEX_URL= http://devpi:3141/root/pypi/+simple/\
PIP_TRUSTED_HOST=devpi

通过登录到您的容器来检查它是否正常工作:
docker-compose run myapp bash pip install --verbose nose
输出应包括
  2 location(s) to search for versions of nose:
* https://pypi.python.org/simple/nose/
* http://devpi:3141/root/pypi/+simple/nose/

现在您可以从另一个容器或 sftp 将包上传到您的容器。

这种方法的优 pip 是可以加快构建速度,但如果 devpi 容器不存在,则不会破坏它们。

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

关于pip - 如何强制 docker build 使用 devpi 服务器进行 pip install 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25031339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com