# Use Python 3.11 slim image FROM python:3.11-slim # Set working directory WORKDIR /app # Install system dependencies including LibreOffice and poppler-utils RUN apt-get update && apt-get install -y \ poppler-utils \ libreoffice \ ffmpeg \ libpoppler-cpp-dev \ libmagic1 \ libffi-dev \ libssl-dev \ g++ \ curl \ libjpeg-dev \ zlib1g-dev \ libxml2-dev \ libxslt-dev \ build-essential \ cargo \ fonts-dejavu-core \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean # Debug: Verify Rust installation RUN rustc --version && cargo --version # Verify LibreOffice and poppler-utils installation RUN libreoffice --version && pdftoppm -v # Copy requirements first for better layer caching COPY app/requirements.txt . # Upgrade pip and install Python dependencies RUN python -m pip install --upgrade pip && \ pip install --no-cache-dir -r requirements.txt # Copy application code COPY app/ . # Make entrypoint script executable RUN chmod +x entrypoint.sh # Create necessary directories for volumes RUN mkdir -p /app/static/uploads /app/static/resurse /app/instance # Expose the application port EXPOSE 5000 # Set environment variables ENV FLASK_APP=app.py ENV FLASK_RUN_HOST=0.0.0.0 ENV PYTHONPATH=/app # Use entrypoint script ENTRYPOINT ["./entrypoint.sh"]