Giter Club home page Giter Club logo

devpi-docker's Introduction

docker启devpi服务

1.简要

  • devpi工具相比其他pypi源工具,有如下特点:

    1. 节省硬盘:不必完全同步下来公开源的所有包,仅在第一次pip安装时从公开源下载和缓存。
    2. 支持上传接口文档:上传自己开发pip库时,可以把接口文档也上传到devpi。
  • 本项目旨在用docker容器启动devpi服务。

2.背景

2.1.为什么要自己搭建pypi源服务

  1. 节省安装时间:当我们在内网打包镜像、安装python环境时,经常要反复外网源下载pip库。即使改用国内的阿里源、豆瓣源,下载速度一般也只会在2~7MB/s左右,如果安装500MB的TensorFlow,下载+安装约需要2分钟。如果遇到网络不稳定,等待时间会更长,而从内网下载安装包,速度在100+MB/s !!!
  2. 分享沉淀python库:内部开发的python库,如果在内部pip源平台上,以pip库的形式内部分享,可以减少很多重复性工作,也可以沉淀工作内容。

2.2. pip源工具对比

比较试用了几款常见的pip源工具,选择devpi工具搭建

工具 上传自己的pip包至服务 外网源同步至服务 安装体验
pypiserver 支持twine命令上传 不支持,需要自己下载 手动同步上千个包后index目录变卡
bandersnatch 不支持命令上传包 自动同步,只能同步国外官方源,占硬盘多 白名单设置同步库较麻烦
devpi 支持twine、devpi命令上传 采用缓存机制,不占用太多硬盘 第一次客户端pip安装,服务会从指定外网源下载,并存入服务硬盘,后面直接走缓存的硬盘

3.快速开始

3.1. docker run 方式

docker run -d --name devpi-lib -p 7104:7104  --env DEVPISERVER_HOST=0.0.0.0 --env DEVPISERVER_PORT=7104 --env DEVPISERVER_ROOT_PASSWORD=password --env DEVPISERVER_USER=lowinli --env DEVPISERVER_PASSWORD=password --env DEVPISERVER_MIRROR_INDEX=pypi --env DEVPISERVER_LIB_INDEX=devpi --env SOURCE_MIRROR_URL=https://pypi.douban.com/simple --restart always --volume volume:/var/lib/devpi lowinli98/devpi:v0.1

3.2. docker-compose 方式

version: "2.3"
services:
  devpi-lib:
    container_name: devpi-lib
    image: lowinli98/devpi:v0.1
    expose:
      - 7104
    ports:
      - "7104:7104"
    environment:
      - DEVPISERVER_HOST=0.0.0.0
      - DEVPISERVER_PORT=7104
      - DEVPISERVER_ROOT_PASSWORD=password
      - DEVPISERVER_USER=lowinli
      - DEVPISERVER_PASSWORD=password
      - DEVPISERVER_MIRROR_INDEX=pypi                    # 指定镜像index
      - DEVPISERVER_LIB_INDEX=devpi                      # 指定上传index
      - SOURCE_MIRROR_URL=https://pypi.douban.com/simple # 指定镜像源
    restart: always
    volumes:
      - ./volume:/var/lib/devpi

3.3. 访问devpi页面

http://0.0.0.0:7104

3.4. 本地pip安装实验

  • 单次安装
pip install tensorflow==2.2.0 -i http://0.0.0.0:7104/lowinli/devpi/+simple/ --trusted-host 0.0.0.0:7104
  • 修改默认pip安装源
# vim ./pip/pip.conf
[global]
index-url = http://0.0.0.0:7104/lowinli/devpi/+simple/
trusted-host = 0.0.0.0:7104

4. 本项目特点

  1. 可以自由指定MIRROR源,尤其配置大陆pypi源可以提高搜索和下载速度,环境变量:SOURCE_MIRROR_URL
  2. 通过索引继承方式,对MIRROR的indexDEVPISERVER_MIRROR_INDEX和个人上传pip库的indexDEVPISERVER_LIB_INDEX进行统一地址管理
  3. 使用了devpi-semantic-ui页面,可以更好的展示pypi库的版本信息、接口文档
  4. examples/upload-demo目录介绍一个例子,打包pip库、sphnix生成接口文档,并上传到devpi服务。

5. 目录介绍

6. 截图

devpi-docker's People

Contributors

lowinli avatar fency12 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.