Google Cloud Run部署Flask应用时出现No CMAKE_CXX_COMPILER未找到错误
错误原因
- 你使用的
python:3.9-slim属于精简版基础镜像,没有预装C/C编译工具链,face_recognition依赖的dlib库编译时需要用到g编译器,因此触发了找不到CMAKE_CXX_COMPILER的报错 - 除此之外dlib编译还需要依赖线性代数库、图形基础库等系统依赖,当前的安装步骤也缺失这些必要包
修正后的Dockerfile
# Use the official lightweight Python image. FROM python:3.9-slim # Allow statements and log messages to immediately appear in the Knative logs ENV PYTHONUNBUFFERED True # Copy local code to the container image. ENV APP_HOME /app WORKDIR $APP_HOME COPY . ./ # Install production dependencies. RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ cmake \ libopenblas-dev \ liblapack-dev \ libx11-dev \ libgtk-3-dev \ && rm -rf /var/lib/apt/lists/* RUN pip install --no-cache-dir -r requirements.txt RUN pip install gunicorn # Run the web service on container startup. CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
调整说明
- 在apt安装阶段新增了
build-essential软件包,该包会预装gcc、g等全套编译工具链,直接解决缺少C编译器的问题 - 新增了
libopenblas-dev、liblapack-dev等dlib编译依赖的线性代数库,以及图形基础依赖,避免后续编译出现其他依赖缺失类报错 - 最后增加了
rm -rf /var/lib/apt/lists/*命令清理apt缓存,可有效控制最终镜像体积,符合Cloud Run的镜像大小优化要求
内容的提问来源于stack exchange,提问作者Zain Fareed
相关产品推荐
相关产品推荐

