|
|
| FROM python:3.10-slim
|
|
|
| ENV HOME=/home/user \
|
| PATH=/home/user/.local/bin:$PATH \
|
| DEBIAN_FRONTEND=noninteractive
|
|
|
|
|
| RUN apt-get update && \
|
| apt-get install -y --no-install-recommends \
|
| git git-lfs wget curl procps htop vim nano \
|
| ffmpeg libsm6 libxext6 ca-certificates \
|
|
|
| build-essential python3-dev libnuma1 && \
|
| rm -rf /var/lib/apt/lists/*
|
|
|
|
|
| RUN useradd -m -u 1000 user
|
|
|
| WORKDIR /home/user/app
|
|
|
|
|
| COPY requirements.txt /home/user/app/requirements.txt
|
|
|
|
|
| RUN pip install --no-cache-dir --upgrade pip setuptools wheel
|
|
|
|
|
| COPY install_paddle_robust.py /tmp/install_paddle_robust.py
|
| COPY paddle_runtime_fixer.py /tmp/paddle_runtime_fixer.py
|
| COPY auto_install_paddle.py /tmp/auto_install_paddle.py
|
|
|
|
|
| RUN echo "🚀 Installing PaddlePaddle with robust installer..." && \
|
| python /tmp/install_paddle_robust.py && \
|
| echo "✅ PaddlePaddle installation completed!" && \
|
| rm /tmp/install_paddle_robust.py
|
|
|
|
|
| RUN pip install --no-cache-dir -r /home/user/app/requirements.txt && \
|
| pip install --no-cache-dir pydantic==2.10.6
|
|
|
|
|
| COPY . /home/user/app
|
|
|
|
|
| RUN chown -R user:user /home/user/app
|
|
|
|
|
| COPY install_paddle_robust.py /home/user/app/
|
| RUN chmod +x /home/user/app/install_paddle_robust.py || true
|
|
|
| USER user
|
|
|
|
|
| RUN echo "🔍 Final PaddlePaddle verification..." && \
|
| python -c "import paddle; import paddleocr; print('✅ All OCR engines ready!')" && \
|
| echo "✅ Container setup completed successfully!"
|
|
|
|
|
| ENV GRADIO_SERVER_NAME="0.0.0.0" \
|
| GRADIO_SERVER_PORT=7860 \
|
|
|
| PADDLE_INSTALL_DIR=/home/user/.local \
|
| FLAGS_allocator_strategy=auto_growth \
|
|
|
| PYTHONUNBUFFERED=1 \
|
| GRADIO_SHARE=False
|
|
|
| EXPOSE 7860
|
|
|
|
|
| HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
| CMD python -c "import paddle; import paddleocr; import gradio; print('✅ Health check passed!')" || exit 1
|
|
|
| CMD ["python", "app.py"]
|
|
|