大家写python的时候有木有碰到过内部要共享应用或者交付给业务运维的时候,需要单独另外安排,要如何操作操作。另外一个层面也是会经常用到
pip
去安装各种包,那么我们是否需要搭建内部的。
•内部需要共享一些敏感的工程(不便上传到pypi仓库)•加速构建•提高效率
•pypiserver•sonatype/nexus•jfrog Artifactory•devpi•docker-pypi•使用github实现pypi私服•PyPICloud•private-pypi
959 star, 一直在持续更新,支持Docker部署,特点就是轻,真的是实现了开箱即用。无web ui。
pypiserver[1]
分社区版和商业版,社区版能满足95%的市场需求,特点是可以实现基于角色的权限控制,支持当前市面上大部分语言,就算原生不支持,github上也能搜索到对应的插件。缺点很明确,就是太过于重量级了。
同样是分社区和商业版,不过社区版很鸡肋,功能很少,如果公司有钱可以考虑商业版,功能真的是好到爆,到什么程度呢,你可以理解为,将会有一半运维人会失业~
384 star, 也是一直在更新,该工具有三个组件构成,相对于pypiserver来说,复杂度有所上升。提供了web ui。
devpi[2]
103 star, 许久不更新了,比较小众,可以不用考虑。
docker-pypi[3]
可以参考下这个文档,how-to-use-github-as-a-pypi-server[4]
同样分为社区和商业版,同样支持docker部署,具体没有用过,感兴趣的小伙伴可以试一把。
pypicloud[5]
101 star, 一直在更新,但是没用过,感兴趣的小伙伴可以试一把。
private-pypi[6]
可以对接LDAP,然后权限把控可以做到很细的颗粒度。
社区版的nexus支持当前业内大多数语言,为了确保内部统一入口,我们选择这个。
打开http://ip:port/#admin/system/api即可浏览API接口的信息。
搭建其实挺简单,找一个大磁盘的机器,挂载存储到本地,一键启动即可。
> docker pull sonatype/nexus3
> docker run -d -p 8081:8081 --name nexus -v /some/dir/nexus-data:/nexus-data sonatype/nexus3
新版本的nexus默认密码不再是admin123, 密码文件存储在/nexus-data/admin.password里,所以需要获取这个临时密码用来登陆。会提示让你修改密码的,不用担心。
•创建一个hosted类型的仓库•创建一个proxy类型的仓库•创建一个group类型的仓库,然后把上面两个类型的仓库包含进去
留作下节分享吧,洗洗睡了~
[1]
pypiserver: https://github.com/pypiserver/pypiserver
[2]
devpi: https://github.com/devpi/devpi
[3]
docker-pypi: https://github.com/codekoala/docker-pypi
[4]
how-to-use-github-as-a-pypi-server: https://www.freecodecamp.org/news/how-to-use-github-as-a-pypi-server-1c3b0d07db2/
[5]
pypicloud: https://pypicloud.readthedocs.io/en/latest/index.html
[6]
private-pypi: https://github.com/pywharf/pywharf