安装docker
部署pypiserver
docker run -d --name pypiserver --restart=always -p 8040:8080 -v ~/pypiserver/packages:/data/packages -v ~/pypiserver/.htpasswd:/data/.htpasswd pypiserver/pypiserver:latest -P .htpasswd packages --hash-algo sha256
指令说明
auth
pypiserver默认使用htpaswd创建的密码文件进行验证,创建指令如下
htpasswd -sc .htpasswd <需要的用户名>
.htpasswd
为密码文件,新创建要加-c参数
创建后在docker中用-P指定密码文件,后跟需要保护的目录,注意默认工作目录是/data
挂载
将密码文件挂载至docker内的/data/.htpasswd
,将包存储目录挂载至/data/packages
hash
pypiserver默认hash算法为md5,poetry
工具使用sha256,所以指定--hash-algo
为sha256
nginx代理
- 如果直接用根目录
/
代理,则只需要
location / {
proxy_pass http://127.0.0.1:8040/;
}
- 从pypiserver 1.3开始,可以在nginx配置中使用X-Forwarded-Host头来实现改变基本URL,实现代理在子路径下:
server {
location /pypi/ {
proxy_set_header X-Forwarded-Host $host:$server_port/pypi;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8040/;
}
}
poetry私有仓库发布配置
poetry config repositories.<自定义仓库名> <https://test.pypi.org/pypi/>
# 添加认证
poetry config http-basic.<自定义仓库名> <username> <password>