You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI Docker容器启动失败:libGL.so.1缺失问题求助

解决FastAPI瑜伽姿势识别API Docker容器启动失败问题

问题现象

本地虚拟环境运行uvicorn main:app --reload --host 0.0.0.0 --port 8000一切正常,但Docker容器启动后立即退出,执行docker ps -a显示容器状态为Exited (1),查看日志报错:

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

原因分析

python:latest官方镜像基于Debian系统,默认未安装OpenCV、MediaPipe等视觉类库依赖的系统级底层组件,libGL.so.1是OpenGL核心库,属于OpenCV运行必需的依赖项。

解决方案

修改Dockerfile,在安装Python依赖前先安装系统级依赖库,具体如下:

修改后的Dockerfile

FROM python:latest

WORKDIR /app

# 安装OpenCV、MediaPipe所需的系统依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
    libgl1-mesa-glx \
    libglib2.0-0 \
    libgstreamer-plugins-base1.0-0 \
    && rm -rf /var/lib/apt/lists/*

COPY ./requirements.txt /app/requirements.txt

RUN pip install --upgrade pip

RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt

COPY ./* /app/

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

关键修改说明

  • apt-get update && apt-get install -y ...:更新软件源并安装必要的系统库:
    • libgl1-mesa-glx:提供缺失的libGL.so.1库,直接解决当前报错
    • libglib2.0-0:MediaPipe依赖的GLib基础库
    • libgstreamer-plugins-base1.0-0:处理视频流的基础组件,避免后续视频读取可能出现的报错
  • rm -rf /var/lib/apt/lists/*:清理apt缓存,减小镜像体积

验证步骤

  1. 重新构建镜像:
    docker build -t asana .
    
  2. 启动容器:
    docker run -d --name asana -p 80:80 asana
    
  3. 检查容器状态:
    docker ps
    
    若容器状态显示为Up,则启动成功,可通过curl http://localhost/hello测试API是否正常响应。

内容的提问来源于stack exchange,提问作者Sulabh Ghimire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 20:47:38