pypi-server: 1.4.2 linux: alpine3.14 python: 3.9.7
Dockerfile
FROM python:3.9.7-alpine3.14LABEL Author="caoxiangpeng"RUN set -ex \# 替换国内源&& echo "" > /root/.pypipasswd \&& echo http://mirrors.aliyun.com/alpine/v3.14/main/ > /etc/apk/repositories \&& echo http://mirrors.aliyun.com/alpine/v3.14/community/ >> /etc/apk/repositories \&& apk update \&& apk add --no-cache --virtual .build-deps gcc musl-dev libffi-dev make openssl ca-certificates libressl-dev apache2-utils\&& pip install pypiserver; pip install passlib \&& mkdir -p /data \&& rm -rf /var/cache/apk/* \&& rm -rf ~/.ash_history ~/.python_historyEXPOSE 80VOLUME ["/data", "/root/.pypipasswd"]# 保留此系统的编译能力,为以后安装做基础ENTRYPOINT ["pypi-server"]CMD ["-P", "/root/.pypipasswd", "-p", "80", "/data"]
docker 运行命令
# 当前路径pwd/Users/johntoms/docker/pypi-server# 创建 数据存储目录及登录用户密码文件mkdir packages && touch pypipasswd# 运行 容器docker run --name mypypi-server -v <pwd>/pacakages:/data -v <pwd>/pypipasswd -p 80:80 -itd registry.cn-hangzhou.aliyuncs.com/private_app/mypypi-server-1.4.2:latest# 添加或更新pypi用户及密码docker exec -it mypypi-server htpasswd -b /root/.pypipasswd root PypiServer@123
本地相关配置
# ~/.pypirccat ~/.pypirc[distutils]index-servers =installinternal[global]index-url =http://127.0.0.1:2199/simplehttp://pypi.douban.com/simple[install]trusted-host=http://127.0.0.1:2199/simpleusername: rootpassword: <password>[internal]repository: http://127.0.0.1:2199username: rootpassword: <password>
编译和上传本地私有包
# 在 setup.py 同级目录下,创建 package.sh#清理数据rm -rf dist/*rm -rf build/*rm -rf flask_framework.egg-info#打包# python3 -m pip install --upgrade setuptools wheelpython3 setup.py sdist bdist_wheel# 上传python setup.py sdist register -r local upload -r local运行脚本sh package.sh
安装
# --extral-index-urlpip install flask_framework --extral-index-url http://127.0.0.1:2199/simple# -ipip install flask_framework -i install
