执行docker-compose up时conda安装依赖无限加载无报错如何解决
问题原因
- 架构兼容性问题:如果你的Mac是M系列(ARM64架构)设备,你使用的
conda/miniconda3基础镜像默认拉取的是x86_64版本,Mac上通过Rosetta2转译运行时,conda在解析跨架构依赖时会消耗大量时间,甚至出现无响应的情况,而你同事的Windows设备本身是x86_64架构,运行原生镜像无兼容开销。 - conda源网络问题:conda默认使用的官方源服务器在国外,若你的Mac网络没有配置合适的代理,拉取依赖包和索引的速度会极慢,导致步骤长时间卡住。
- conda依赖解析效率问题:旧版本conda的依赖解析算法性能较差,当
requirements.txt里依赖较多时,解析过程会指数级耗时。
解决方法
- 适配ARM64架构(针对M系列Mac)
可以强制指定镜像运行架构,在docker-compose.yml的web服务中新增platform字段:
version: '3.7' services: web: build: . platform: linux/amd64 # 新增这行,强制用x86架构模拟运行 command: python /app/current/manage.py runserver 0.0.0.0:80 volumes: - .:/app/current/ ports: - 8082:80
也可以直接更换支持多架构的miniconda基础镜像,修改Dockerfile第一行为:
FROM continuumio/miniconda3:latest
- 优化conda配置提升解析和下载速度
在conda install步骤前新增配置项,更新conda版本并开启通道优先级,也可替换为国内源加快下载速度:
FROM conda/miniconda3 COPY requirements.txt /conda_files/requirements.txt # 新增conda优化配置 RUN conda config --set channel_priority strict && \ conda update -n base conda -y # 如需换国内源,可在上面的RUN命令中新增源配置 # conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ && \ # conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ && \ # conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ && \ RUN conda install -y --file /conda_files/requirements.txt -c conda-forge -c anaconda RUN pip install requests-html==0.10.0 COPY . /app/ref_wallet ENV PYTHONPATH "${PYTHONPATH}:/app/ref_wallet"
- 使用mamba替代conda做依赖安装
mamba是conda的C++实现版本,依赖解析速度比conda快数十倍,可直接替换安装命令:
RUN conda install mamba -y -c conda-forge && \ mamba install -y --file /conda_files/requirements.txt -c conda-forge -c anaconda
- 定位具体卡点
可以给conda install命令添加-vvv参数输出详细执行日志,就能明确是卡在依赖解析环节还是包下载环节,针对性排查问题。
内容的提问来源于stack exchange,提问作者Hexycode
相关产品推荐
相关产品推荐

