docker运行pypiserver,并用nginx代理,poetry私有仓库上传

安装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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容