Docker Compose构建镜像失败:pip安装requirements.txt遇Git连接超时
解决方案
1. 替换Git协议为HTTPS
直接修改requirements.txt中的仓库地址,将git://github.com/DMOJ/django-sortedm2m.git替换为https://github.com/DMOJ/django-sortedm2m.git。很多网络环境会拦截Git协议(默认使用9418端口),而HTTPS协议(443端口)通常不受限制,能避免连接超时问题。
2. 为Docker构建指定DNS服务器
如果替换协议后仍无法连接,可能是Docker容器的DNS解析异常。可以在构建时手动指定公共DNS:
sudo docker-compose build --build-arg DNS_SERVER=8.8.8.8 base
同时在base服务的Dockerfile中添加以下内容,确保容器使用指定的DNS:
ARG DNS_SERVER RUN echo "nameserver $DNS_SERVER" > /etc/resolv.conf
注:部分基础镜像(如Alpine)的resolv.conf路径可能不同,需根据实际镜像调整。
3. 本地克隆后本地安装
若网络环境严格限制外部Git访问,可先在本地克隆仓库:
git clone https://github.com/DMOJ/django-sortedm2m.git
然后修改requirements.txt,将仓库地址替换为本地路径(确保路径相对于Dockerfile的上下文目录):
./django-sortedm2m
这样构建时Docker会直接使用本地代码,无需远程拉取。
4. 排查主机与Docker网络连通性
- 先在主机测试能否正常克隆仓库:
git clone git://github.com/DMOJ/django-sortedm2m.git
如果主机也超时,说明是主机网络环境的问题(如防火墙、代理限制),需先解决主机网络连通性。
- 若主机能正常克隆,尝试重启Docker服务:
sudo systemctl restart docker
重启后再重新执行构建命令,排除Docker网络服务异常的可能。
内容的提问来源于stack exchange,提问作者Telles Tran
相关产品推荐
相关产品推荐

