使用docker-compose up --build时poetry install遇Connection reset by peer错误求助
解决Docker构建中Poetry安装NVIDIA依赖包的ConnectionResetError问题
以下是针对ConnectionResetError: [Errno 104] Connection reset by peer错误的几种可行解决方法:
1. 更换PyPI镜像源
官方PyPI源访问不稳定是常见诱因,切换到国内镜像源可大幅提升连接稳定性:
- 在Dockerfile的
RUN poetry install步骤前添加镜像配置命令:RUN poetry config repositories.tuna https://pypi.tuna.tsinghua.edu.cn/simple RUN poetry config pypi.default-repository tuna - 也可直接在项目的
pyproject.toml中配置镜像,避免Dockerfile重复设置:[[tool.poetry.source]] name = "tuna" url = "https://pypi.tuna.tsinghua.edu.cn/simple" default = true
2. 添加安装重试机制
连接重置可能是临时网络波动导致,增加重试次数可提高安装成功率:
- 若Poetry版本支持
--retries参数,修改安装命令:RUN poetry install --verbose -v --retries 5 - 旧版Poetry无该参数时,用循环重试逻辑:
RUN until poetry install --verbose -v; do echo "安装失败,5秒后重试..."; sleep 5; done
3. 本地预下载依赖包后拷贝到镜像
若网络问题持续,可绕过远程源,手动下载依赖包到本地后再构建:
- 本地执行命令下载目标依赖:
poetry download nvidia-cublas-cu12 nvidia-cusparse-cu12 - 在Dockerfile中拷贝包文件并指定本地安装源:
COPY ./downloaded-packages /app/packages RUN poetry install --verbose -v --no-index --find-links /app/packages
4. 检查并调整网络配置
- 若构建时使用代理,确认代理服务器稳定,或临时关闭代理;需开启代理时添加环境变量:
ENV http_proxy=http://your-proxy-addr:port ENV https_proxy=http://your-proxy-addr:port - 在
docker-compose.yml中确认网络模式配置,避免网络隔离问题:services: your-service: network_mode: bridge
5. 升级Poetry版本
旧版Poetry可能存在网络请求兼容性问题,先升级再执行安装:
RUN pip install --upgrade poetry RUN poetry install --verbose -v
内容的提问来源于stack exchange,提问作者Tạ Minh Quang
相关产品推荐
相关产品推荐

