使用python:3.9-alpine3.14构建Django时找不到匹配Django版本
解决方案
1. 优先替换pip使用国内PyPI镜像源
绝大多数PyPI访问超时都是官方源跨境网络不稳定导致,替换为国内镜像源即可解决:
- 临时指定源(直接修改Dockerfile中的pip安装命令即可):
命令示例:
可选的国内源还有阿里云镜像源/py/bin/pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn -r /requirements.txthttps://mirrors.aliyun.com/pypi/simple/、中科大镜像源https://pypi.mirrors.ustc.edu.cn/simple/。 - 全局配置源(后续所有pip操作都自动生效,适合镜像内有多次pip安装的场景):
在Dockerfile的pip安装步骤前新增配置写入命令:RUN mkdir -p /root/.pip \ && echo "[global]" > /root/.pip/pip.conf \ && echo "index-url = https://pypi.tuna.tsinghua.edu.cn/simple" >> /root/.pip/pip.conf \ && echo "trusted-host = pypi.tuna.tsinghua.edu.cn" >> /root/.pip/pip.conf
2. 调整Docker构建网络配置
如果替换源后仍存在超时问题,排查Docker网络本身的问题:
- 使用宿主机网络构建:Linux环境下给构建命令加
--network host参数,直接复用宿主机网络栈,避免Docker默认桥接网络的DNS解析/转发损耗:
*注:该参数仅适配Linux环境Docker,Windows/Mac端Docker Desktop可直接在设置面板调整DNS、代理配置。docker-compose build --network host - 修改Docker全局DNS:编辑
/etc/docker/daemon.json添加公共DNS,解决域名解析超时问题:
修改后执行{ "dns": ["114.114.114.114", "8.8.8.8"] }systemctl restart docker重启Docker服务后再重新构建。
3. 调整pip超时参数
如果是网络波动导致的偶发超时,可给pip命令增加--timeout参数延长等待时长,示例:
/py/bin/pip install --timeout 120 -r /requirements.txt
4. 配置公网代理(仅适用于需要代理访问公网的环境)
如果宿主机需要走代理才能访问公网,可通过构建参数传入代理环境变量,避免硬编码代理地址:
- 先在Dockerfile中声明构建参数:
ARG HTTP_PROXY ARG HTTPS_PROXY - 构建时传入代理地址:
docker-compose build --build-arg HTTP_PROXY=http://你的代理地址:端口 --build-arg HTTPS_PROXY=http://你的代理地址:端口
内容的提问来源于stack exchange,提问作者3therk1ll
相关产品推荐
相关产品推荐

