基于docker部署python私有仓库-devpi

一、制作镜像

 1、Dockerfile

cat Dockerfile
FROM python:3.7-alpine

MAINTAINER yangyuhang@qq.com

RUN echo "http://mirrors.aliyun.com/alpine/v3.11/main" > /etc/apk/repositories && \
    echo "http://mirrors.aliyun.com/alpine/v3.11/community" >> /etc/apk/repositories

RUN apk update && \
    apk add --no-cache gcc g++ python python-dev py-pip mysql-dev linux-headers libffi-dev openssl-dev

RUN pip install devpi-server devpi-web devpi-client -i https://mirrors.aliyun.com/pypi/simple/ && \
    mkdir /devpi

EXPOSE 3141
ADD run.sh /
CMD ["/bin/sh","run.sh"]

 2、启动脚本-run.sh

cat run.sh
#!/bin/sh
set -e
set -x
export DEVPI_SERVERDIR=/devpi
[[ -f $DEVPI_SERVERDIR/.serverversion ]] || initialize=yes

if [[ $initialize == yes ]]; then
    devpi-server --port 3141 --serverdir $DEVPI_SERVERDIR --init
fi

devpi-server --host 0.0.0.0 --port 3141 --serverdir $DEVPI_SERVERDIR

 以上内容均在本人gitee仓库,有需求随意拉取。

二、容器启动

docker run --name devpi -v /data/devpi:/devpi -p 3141:3141 -d devpi:latest 

  容器启动后可访问http://127.0.0.1:3141/进行验证。 

三、私有仓库的使用

1、登陆容器并使用私有仓库

docker exec -it devpi /bin/sh

devpi use http://localhost:3141

2、创建一个普通用户,用于上传私有化包

# 创建账户
devpi -c test password=test

# 修改密码
devpi -m test password=

 3、创建索引,用于存放私有化包,方便管理各种类型的包

# 先登陆私有仓库
devpi login test --password=test

# 创建索引
devpi index -c dev

#激活索引
devpi use dev

   至此,一个私有化仓库就已经搭建成功了。现在可以将你自己打好的包上传至该仓库。 

四、私有仓库使用demo

 1、创建一个python项目,目录包含如下内容

$ tree linode_example
linode_example
├── linode_example
│   └── __init__.py
└── setup.py

1 directory, 2 files

 2、编写__init__.py文件

cat linode_example/linode_example/__init__.py
def hello_word():
     print("hello world")

 3、编写setup.py,用于将项目打成pip包

cat linode_example/setup.py
from setuptools import setup
setup(
     name='linode_example',
     packages=['linode_example'],    
     description='Hello world enterprise edition',
     version='0.1',   #版本号
     url='http://github.com/example/linode_example',
     author='Linode',
     keywords=['pip','linode','example']
     )

  4、将项目打包

python3 setup.py sdist

   命令执行后会在项目根目录下生成一个dist目录,dist目录下保存着制作好的tar包,新的目录结构如下:

$ tree linode_example
linode_example
├── dist
│   └── linode_example-0.1.tar.gz
├── linode_example
│   └── __init__.py
├── linode_example.egg-info
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   └── top_level.txt
└── setup.py

   5、将包上传至仓库

twine upload --repository-url http://127.0.0.1:3141/test/dev/ dist/* 

# test为之前在pypi仓库中建立的用户
# dev为之前在pypi仓库中建立的索引
# 上传时需要输入用户名密码:test/test

  6、使用私有仓库的包   

pip install -i http://localhost:3141/test/dev/ --trusted-host localhost linode_example 

  7、验证下载的包能否使用

 

验证成功,该仓库可用,为了方便使用,也可以将该仓库配置至~/.pip/pip.conf文件中,如下图:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值