Team Ai
Apppublic

bluewhale2025/parseai-document-processor

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
Dockerfile92 linesDownload Raw Back to root
1FROM python:3.9-slim2 3# Create app directory and set permissions4RUN mkdir -p /home/user/app && \5    chmod -R 777 /home/user && \6    mkdir -p /home/user/app/data/uploads && \7    mkdir -p /home/user/app/data/processed && \8    mkdir -p /home/user/app/nltk_data && \9    chmod -R 777 /home/user/app10 11WORKDIR /home/user/app12 13# Install system dependencies14RUN apt-get update && apt-get install -y \15    build-essential \16    curl \17    libssl-dev \18    libffi-dev \19    python3-dev \20    python3-pip \21    git \22    poppler-utils \23    tesseract-ocr \24    tesseract-ocr-eng \25    && rm -rf /var/lib/apt/lists/*26 27# Set environment variables28ENV PYTHONUNBUFFERED=129ENV NLTK_DATA=/home/user/app/nltk_data30ENV HUGGINGFACE_HUB_CACHE=/home/user/app/huggingface_cache31ENV UPLOAD_FOLDER=/home/user/app/data/uploads32ENV PROCESSED_FOLDER=/home/user/app/data/processed33 34# Create a non-root user and switch to it35RUN useradd -m -u 1000 user && \36    chown -R user:user /home/user37 38# Copy requirements first to leverage Docker cache39COPY --chown=user:user requirements.txt .40 41# Install Python dependencies42USER root43 44# Create a directory for NLTK data with proper permissions45RUN mkdir -p /usr/local/share/nltk_data \46    && chmod -R 777 /usr/local/share/nltk_data47 48# Install Python dependencies49RUN pip install --no-cache-dir -r requirements.txt50 51# Install system dependencies for NLTK52RUN apt-get update && apt-get install -y --no-install-recommends \53    unzip \54    && rm -rf /var/lib/apt/lists/*55 56# Download and install NLTK data as root57RUN python -c "import nltk; nltk.download('punkt', download_dir='/usr/local/share/nltk_data')" \58    && python -c "import nltk; nltk.download('stopwords', download_dir='/usr/local/share/nltk_data')" \59    && python -c "import nltk; nltk.download('wordnet', download_dir='/usr/local/share/nltk_data')" \60    && python -c "import nltk; nltk.download('averaged_perceptron_tagger', download_dir='/usr/local/share/nltk_data')" \61    && chmod -R 755 /usr/local/share/nltk_data62 63# Set NLTK_DATA environment variable64ENV NLTK_DATA=/usr/local/share/nltk_data65 66# Verify NLTK data is accessible67RUN python -c "import nltk; nltk.data.path.append('/usr/local/share/nltk_data'); nltk.data.find('tokenizers/punkt')"68 69# Switch to non-root user70USER user71 72# Copy application files73COPY --chown=user:user . .74 75# Make scripts executable76RUN chmod +x /home/user/app/start.sh /home/user/app/download_nltk_data.py77 78USER user79 80# Set working directory81WORKDIR /home/user/app82 83# Expose the port the app runs on84EXPOSE 786085 86# Health check87HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \88    CMD curl -f http://localhost:7860/ || exit 189 90# Command to run the application91CMD ["/app/start.sh"]92