部署Flask-PaddleOCR至Google Cloud Run遇libssl依赖错误求助
解决Flask-PaddleOCR部署到Google Cloud Run的libssl.so.1.1缺失问题
核心原因分析
libssl.so.1.1是OpenSSL 1.1版本的核心库,Python 3.8-slim-buster镜像基于Debian 10(buster),本应默认提供该库,但你的Dockerfile存在两个关键问题:
- 系统依赖安装顺序错误:先安装Python包(Paddle系列)再安装系统库,导致Paddle安装时无法正确链接到libssl
- 缺少PaddleOCR运行必需的其他系统依赖,间接引发依赖加载失败
修正后的Dockerfile配置
FROM python:3.8-slim-buster # 优先安装所有系统依赖,包括libssl1.1和PaddleOCR必需的底层库 RUN apt-get update && apt-get install -y --no-install-recommends \ libssl1.1 \ libglib2.0-0 \ libsm6 \ libxrender1 \ libxext6 \ openssl \ && rm -rf /var/lib/apt/lists/* # 复制应用代码 COPY . ./ # 安装Python依赖,使用--no-cache-dir减少镜像体积 RUN pip install --no-cache-dir flask gunicorn RUN pip install --no-cache-dir paddlepaddle==2.4.2 RUN pip install --no-cache-dir paddleocr pillow # 启动服务 CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 app:app
关键优化点说明
- 调整安装顺序:先完成系统级依赖安装,确保Paddle系列包在安装过程中能正确识别并链接到
libssl.so.1.1 - 补充PaddleOCR必需库:
libglib2.0-0、libsm6等是OpenCV(PaddleOCR的核心依赖)的运行必需库,缺失会导致依赖加载链断裂 - 清理缓存:通过
rm -rf /var/lib/apt/lists/*和--no-cache-dir减小镜像体积,避免Cloud Run部署时的冗余问题 - 明确指定libssl1.1:即使镜像默认包含,显式安装可确保版本匹配,避免潜在的依赖冲突
额外排查步骤
- 本地验证镜像:
访问docker build -t flask-paddleocr . docker run -p 8080:8080 -e PORT=8080 flask-paddleocrhttp://localhost:8080确认应用正常运行,排除代码本身问题 - 检查Cloud Run资源配置:PaddleOCR运行建议分配至少1CPU、2GB内存,资源不足也可能导致服务启动失败
- 查看完整日志:在Cloud Run控制台的"日志"面板中查看详细错误堆栈,确认是否存在其他依赖缺失情况
内容的提问来源于stack exchange,提问作者solidus
相关产品推荐
相关产品推荐

