gfhshf / Dockerfile
haaaaus's picture
Upload 25 files
41a6ed6 verified
# syntax=docker/dockerfile:1.4
FROM python:3.10-slim
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH \
DEBIAN_FRONTEND=noninteractive
# Cài gói cần thiết (dọn cache sau)
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 \
# Thêm dependencies cho PaddlePaddle
build-essential python3-dev libnuma1 && \
rm -rf /var/lib/apt/lists/*
# Tạo user không phải root
RUN useradd -m -u 1000 user
WORKDIR /home/user/app
# Copy requirements và cài đặt dependencies trước (để tận dụng Docker cache)
COPY requirements.txt /home/user/app/requirements.txt
# Cài Python dependencies cơ bản TRƯỚC khi cài PaddlePaddle
RUN pip install --no-cache-dir --upgrade pip setuptools wheel
# Copy script cài đặt PaddlePaddle mạnh mẽ
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
# Cài đặt PaddlePaddle bằng script chuyên dụng
RUN echo "🚀 Installing PaddlePaddle with robust installer..." && \
python /tmp/install_paddle_robust.py && \
echo "✅ PaddlePaddle installation completed!" && \
rm /tmp/install_paddle_robust.py
# Bây giờ cài các dependencies khác
RUN pip install --no-cache-dir -r /home/user/app/requirements.txt && \
pip install --no-cache-dir pydantic==2.10.6
# Copy source code sau khi cài dependencies (để tối ưu cache)
COPY . /home/user/app
# Chuyển ownership cho user
RUN chown -R user:user /home/user/app
# Copy setup scripts và make executable
COPY install_paddle_robust.py /home/user/app/
RUN chmod +x /home/user/app/install_paddle_robust.py || true
USER user
# Final verification và setup cho Hugging Face Spaces
RUN echo "🔍 Final PaddlePaddle verification..." && \
python -c "import paddle; import paddleocr; print('✅ All OCR engines ready!')" && \
echo "✅ Container setup completed successfully!"
# Environment variables cho Gradio trên Hugging Face Spaces
ENV GRADIO_SERVER_NAME="0.0.0.0" \
GRADIO_SERVER_PORT=7860 \
# PaddlePaddle specific env vars
PADDLE_INSTALL_DIR=/home/user/.local \
FLAGS_allocator_strategy=auto_growth \
# Hugging Face Spaces specific
PYTHONUNBUFFERED=1 \
GRADIO_SHARE=False
EXPOSE 7860
# Health check để verify tất cả dependencies
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"]