FROM python:3.11-slim LABEL maintainer="SKE Digital Signage" LABEL version="2.0.0" LABEL description="SKE Digital Signage Server" # Set working directory WORKDIR /app # Install system dependencies RUN apt-get update && apt-get install -y \ libreoffice \ poppler-utils \ ffmpeg \ libpoppler-cpp-dev \ libmagic1 \ libffi-dev \ libssl-dev \ g++ \ curl \ libjpeg-dev \ zlib1g-dev \ libxml2-dev \ libxslt-dev \ build-essential \ && rm -rf /var/lib/apt/lists/* # Create non-root user for security RUN useradd -r -s /bin/bash -m -d /app -u 1001 appuser # Copy requirements first to leverage Docker cache COPY 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 . . # Create necessary directories RUN mkdir -p instance static/uploads static/assets logs # Set ownership to non-root user RUN chown -R appuser:appuser /app # Switch to non-root user USER appuser # Expose port EXPOSE 5000 # Environment variables ENV FLASK_APP=main.py ENV FLASK_ENV=production ENV PYTHONPATH=/app # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost:5000/api/health || exit 1 # Run the application CMD ["python", "main.py"]