背景
jenkins机器网络有限制,需要单独搭建私有pypi源来使用。
私有pypi源机器网络也不通,从windows本机电脑中下载whl包上传到私有仓库。
搭建步骤
搭建私有pip源
本地构建pypiserver镜像
1、dockerfile文件
FROM python:3.9-slim
# 安装 pypiserver
RUN python -m pip install --upgrade pip && pip install pypiserver
# 创建存储包的目录
RUN mkdir -p /app/storage
# 设置工作目录
WORKDIR /app
# 定义环境变量
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# 启动 pypiserver(根据你的配置调整命令)--backend", "cached-dir"表示使用缓存目录,会加快镜像仓库速度
ENTRYPOINT ["pypi-server", "-p", "9090", "--backend", "cached-dir" , "--log-file", "pypiserver.log", "/app/storage"]
2、构建+部署,启动的时候仓库存储目录根据自己需求改
docker build -t my-pypiserver:1.0 .
docker save -o pypiserver.tar.gz my-pypiserver:1.0
#上传镜像包到服务器并启动
docker run -itd --rm -p 9090:9090 --name my-pypiserver-container -v /data/python-packages:/app/storage my-pypiserver:1.0
3、curl测试是否安装成功,出现如下列表表示安装成功,若不成功查看docker容器日志。
4、使用命令,注意--trusted-host为访问的服务器地址,必须加入,最后的/不可省略。否则一直会报错version不匹配。
pip install -r requirements.txt --index-url http://xxxx:9090/simple/ --trusted-host xxxx
本地上传包(私有仓库节点通网的话忽略此步骤,直接配置镜像同步即可)
1、本地下载python镜像拉whl包(需要本地安装了docker)
#获取官方镜像
docker pull python:3.9.9-slim-buster
#启动容器
docker run -itd --name python3.9.9 --network host python:3.9.9-slim-buster
2、根据 `requirements.txt` 文件生成 `.whl`(Wheel)文件:
#拷贝requirements.txt到容器
docker cp .\requirements.txt python3.9.9:/opt
#进入容器
docker exec -it 15f0 bash
##设置python镜像源(清华源)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
cd /opt
##创建虚拟环境并激活
python -m venv myenv
source myenv/bin/activate
python -m pip install --upgrade pip
pip install wheel
pip install -r requirements.txt
pip wheel -r requirements.txt --wheel-dir=./dist
#退出容器,拷贝包到本地
exit
docker cp python3.9.9:/opt/dist E:\work
#如果需要,清理 `pip` 缓存以释放空间。
pip cache purge
3、手动上传whl包到pypiserver镜像仓库,至此大功告成,已经可以使用了,唯一缺点就是需要手动维护包。