一个计算机技术爱好者与学习者

0%

好好学Python:使用Docker安装配置PyPI Server

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