一、搭建

1、准备htpasswd.txt文件

  该文件内容包含上传包至仓库时验证的用户名和密码
pip install htpasswd
htpasswd -sc htpasswd.txt <username>

2、启动容器

docker run --name pypiserver --restart=always -v /data/pypi/packages:/data/packages -v /root/htpasswd.txt:/data/htpasswd.txt  -p 8080:8080  -d pypiserver/pypiserver -P htpasswd.txt packages

#需在宿主机上提前建立好data目录及htpasswd.txt文件

3、设置nginx反向代理

cat /usr/local/nginx/conf/exten/pypi.conf
upstream pypi {
server 127.0.0.1:8080;
} server { listen 80;
server_name pypi.local.me;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://pypi;
}
}

二、使用

1、建立测试项目

# 建立项目目录
mkdir -p linode_example/linode_example
# 建立setup.py
cat linode_example/setup.py
from setuptools import setup
setup(
name='linode_example',
packages=['linode_example'], #上传到仓库后的目录,如http://pypi.local.me/linode_example
description='Hello world enterprise edition',
version='0.1', # 版本号
url='http://github.com/example/linode_example',
author='Linode',
keywords=['pip','linode','example']
)
# 该文件内容为说明性内容,可根据自己的包的情况进行设置 # 建立__init__.py 主程序
cat linode_example/linode_example/__init__.py
def hello_word():
print("hello world") # 打包并上传
python3.7 setup.py sdist # 打包,执行完后会在dist目录下有个tar包
twine upload --repository-url http://pypi.local.me dist/* # 上传时需要输入用户名和密码:admin/admin123

2、使用上传至仓库的包

pip install -i http://pypi.local.me --trusted-host pypi.local.me linode_example

打包注意事项:

1、所有需要打包的项目在git仓库中的目录结构必须一致,便于jenkinsfile自动化集成;

2、所有需要打包的项目的setup.py文件必须位于项目根目录下;

3、python使用统一版本,每个项目的版本需要固定,便于迭代。

参考资料:

pypiserver搭建参考文档

如何制作python第三方包

基于Docker搭建pypi私有仓库的更多相关文章

  1. docker 搭建本地私有仓库

    1.使用registry镜像创建私有仓库 安装docker后,可以通过官方提供的 registry 镜像来简单搭建一套本地私有仓库环境: docker run -d -p : registry: 这将 ...

  2. Docker学习笔记六:Docker搭建企业级私有仓库

    前言 Docker不仅是一个强大的服务器部署工具,而且它还有一个官方的Docker Hub registry用于储存Docker镜像.上传镜像到Docker Hub是免费的,上传的镜像文件同时也对公共 ...

  3. 使用verdaccio+docker搭建npm私有仓库以及使用

    公司内部前端组件或库的共享等,搭建一个npm私有库就很方便,现在中大型公司也基本都有自己的npm私有库,这篇文章,和大家一起共同搭建一个npm私有库,共同学习 前置条件 一台电脑 可以联网 一.安装d ...

  4. Docker搭建本地私有仓库

    安装部署一个私有的Docker Registry是引入.学习和使用Docker这门技术的必经之路之一.尤其是当Docker被所在组织接受,更多人.项目和产品开始接触和使用Docker时,存储和分发自制 ...

  5. 基于IP的docker private registry 私有仓库的搭建

    鉴于国内的网络环境,如果公司内部大量使用docker,镜像上传下载将是个非常耗时的工作,搭建一个私有仓库可以很好的解决自有镜像的存储,如果你在私有网络,不能使用域名的话,那么本文可以作为一个很好的例子 ...

  6. 实战maven私有仓库三部曲之三:Docker下搭建maven私有仓库

    本章是<实战maven私有仓库>系列的第三篇,在前两章中,我们先在linux搭建maven私有仓库,然后在开发环境使用此仓库,本章我们在docker下快速搭建maven私有仓库,然后像前面 ...

  7. docker使用registry搭建本地私有仓库

    参考链接来自:http://blog.csdn.net/wangtaoking1/article/details/44180901/ 和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时 ...

  8. Docker容器之搭建本地私有仓库

    Docker容器之搭建本地私有仓库 本地私有仓库搭建的具体步骤 首先下载 registry 镜像 docker pull registry 在 daemon.json 文件中添加私有镜像仓库的地址并重 ...

  9. docker 基础之私有仓库

    docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库.安装运行 docker-registry容器 在安装了 Docker 后,可以通过获取官方 registry 镜像来运行. ...

随机推荐

  1. Luogu P3262 [JLOI2015]战争调度

    题意 给定一棵高度为 \(n\) 的完全二叉树,可以将节点设置成两种状态.如果某个叶子 \(x\) 的状态为 \(i\) 同时他的某个祖先也为 \(i\),那么这个叶子就会对祖先产生 \(f_{x,i ...

  2. 用GitHub Pages搭建博客(二)

    本篇介绍基本GitHub Pages的搭建流程 GitHub账号及仓库创建 登录GitHub,录入用户名.邮箱.密码,创建成功后登录进入. 注册时,邮箱建议不使用QQ邮箱.因为一些第三方部署类网站不支 ...

  3. css-2d,3d,过渡,动画

    css2d CSS3 转换可以对元素进行移动.缩放.转动.拉长或拉伸. 2D变换方法: translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动 transform: ...

  4. mysql数据库——选择优化的数据类型

    选择更小的数据类型:一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,它们占用更少的磁盘.内存和CPU缓存,并且处理时需要的CPU周期也更少.但是要确保没有低估需要存储的 ...

  5. update和insert

    sprintf(sql, "INSERT lora_net(eui,online) VALUES('%s', 1) ON DUPLICATE KEY UPDATE online=1" ...

  6. 840. Magic Squares In Grid ——weekly contest 86

    题目链接:https://leetcode.com/problems/magic-squares-in-grid/description attention:注意给定的数字不一定是1-9. time: ...

  7. angularJS 小记

    刚刚接触angularJS,网上学习了一遍菜鸟教程(http://www.runoob.com/angularjs/angularjs-tutorial.html),做了些基础知识的笔记. Angul ...

  8. [C#.NET 拾遗补漏]12:死锁和活锁的发生及避免

    多线程编程时,如果涉及同时读写共享数据,就要格外小心.如果共享数据是独占资源,则要对共享数据的读写进行排它访问,最简单的方式就是加锁.锁也不能随便用,否则可能会造成死锁和活锁.本文将通过示例详细讲解死 ...

  9. 6. Spark SQL和Beeline

    *以下内容由<Spark快速大数据分析>整理所得. 读书笔记的第六部分是讲的是Spark SQL和Beeline. Spark SQL是Spark用来操作结构化和半结构化数据的接口. 一. ...

  10. 采用“传统”方式获取当前HttpContext

    我们知道"依赖注入"已经成为了.NET Core的基本编程模式,表示当前请求上下文的HttpContext可以通过注入的IHttpContextAccessor服务来提取.有时候我 ...