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缓存,减小镜像体积
验证步骤
- 重新构建镜像:
docker build -t asana . - 启动容器:
docker run -d --name asana -p 80:80 asana - 检查容器状态:
若容器状态显示为docker psUp,则启动成功,可通过curl http://localhost/hello测试API是否正常响应。
内容的提问来源于stack exchange,提问作者Sulabh Ghimire
相关产品推荐
相关产品推荐

