1. PyPI Server简介
PyPI Server是一个Python包索引(Python Package Index)的服务器实现,可以用来搭建自己的Python包管理中心。这样,我们就可以上传并分发我们自己的Python包,或者为我们的团队、组织内部提供一个单独、私有、远程的Python包服务器。
本文中,我们使用Docker安装配置一个基于 devpi 的PyPI Server。至于Python包打包上传到PyPI Server的方法,请参考《Python软件仓库PyPI》。
相关文档:
2. 准备配置文件
准备配置文件:
- config.yaml:devpi的配置文件
- Dockerfile:用于打包devpi-server的镜像
- devpi-ldap.yaml:devpi支持ldap的配置
完整配置文件参考hexo-storage/python-pypi
3. 准备PyPI Server镜像
1
| docker build -t voidking/devpi-server:v1.0 .
|
4. 安装PyPI Server
4.1. master节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| mkdir -p /opt/pypi/data/ mkdir -p /opt/pypi/certs/ openssl genrsa -out /opt/pypi/certs/key.pem 2048 chmod 600 /opt/pypi/certs/key.pem
docker run --rm \ -v /opt/pypi/data:/app/data \ -v /opt/pypi/certs/key.pem:/app/certs/key.pem \ -p 3141:3141 \ voidking/devpi-server:v1.0 \ devpi-init --configfile config.yaml \ --role master
docker run -it --name devpi-master -d \ --restart=always \ -v /opt/pypi/data:/app/data \ -v /opt/pypi/certs/key.pem:/app/certs/key.pem \ -p 3141:3141 \ voidking/devpi-server:v1.0 \ devpi-server \ --configfile config.yaml \ --ldap-config devpi-ldap.yaml \ --gitlab-registry-url https://gitlab.voidking.com \ --role master \ --secretfile /app/certs/key.pem \ --port=3141
|
4.2. worker节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| docker run -it --rm \ -v /opt/pypi/data:/app/data \ -v /opt/pypi/certs/key.pem:/app/certs/key.pem \ -p 3141:3141 \ voidking/devpi-server:v1.0 \ devpi-init \ --configfile config.yaml \ --role replica \ --master=http://192.168.56.101:3141
docker run -it --name devpi-worker1 -d \ --restart=always \ -v /opt/pypi/data:/app/data \ -v /opt/pypi/certs/key.pem:/app/certs/key.pem \ -p 3141:3141 \ voidking/devpi-server:v1.0 \ devpi-server \ --configfile config.yaml \ --role replica \ --master=http://192.168.56.101:3141 \ --secretfile /app/certs/key.pem \ --port=3141
|
5. PyPI Server初始化
5.1. 登录PyPI仓库
1、下载安装devpi client
1
| pip install devpi-client
|
2、指定PyPI Server
1
| devpi use http://192.168.56.101:3141
|
3、登录PyPI Server
1
| devpi login root --password=''
|
4、修改密码
1 2
| devpi passwd devpi user -m root password=xxx
|
5、测试登录登出
1 2 3
| devpi login root --password=xxx devpi logoff devpi login root --password=xxx
|
5.2. 设置镜像仓库
1
| devpi index root/pypi mirror_url="https://pypi.douban.com/simple"
|
当本地PyPI仓库中不存在某个包时,从镜像仓库中拉取。
5.3. 创建索引
1 2
| devpi index -c dev bases=root/pypi devpi use root/dev
|