用docker创建私服
使用docker compose 启动私服 (/packages 为外挂的缓存目录)
services:pypi:image: pypiserver/pypiserver:v2.1.1environment:- PYTHONUNBUFFERED=1network_mode: hostvolumes:- /packages:/data/packagescommand: --fallback-url https://pypi.tuna.tsinghua.edu.cn/simple /data/packages
创建shell脚本拉取依赖
在 /packages 目录里面创建一个requirements.txt文件里面写依赖包。
# cat requirements.txt
setuptools==70.3.0
certifi==2024.7.4
把下面pull.sh也放到/packages 里面。
#!/bin/bash
pip install --upgrade pip -i https://pypi.mirrors.ustc.edu.cn/simple/
for i in `cat ../requirements.txt`;dopip download -d . -i https://pypi.tuna.tsinghua.edu.cn/simple/ $i
done
把包放到私服里面
启动一个临时容器,镜像为构建时的基础镜像,保持环境一致。
docker run --rm -it -v /packages:/packages -w /packages python:3.11.9-bookworm /bin/bash pull.sh
构建时使用私服地址
FROM python:3.11.9-bookworm
# 设置默认时区
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo 'Asia/Shanghai' >/etc/timezone # 防止Python缓冲stdout和stderr,以避免出现以下情况
# 由于缓冲,应用程序在没有发出任何日志的情况下崩溃。
ENV PYTHONUNBUFFERED=1# 复制应用
COPY . /app/
WORKDIR /app# 安装依赖包
RUN pip install -i http://192.168.1.9:8080/simple --trusted-host 192.168.1.9 -r requirements.txt# 暴露容器端口
EXPOSE 80# 运行应用程序
CMD [ "/bin/bash", "-c", "python server.py" ]