FROM python:3.11-slim

EXPOSE 8111

RUN apt-get update && apt-get install -y \
    default-mysql-client \
    curl \
    && rm -rf /var/lib/apt/lists/*

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

WORKDIR /opt/

# Create directories
RUN mkdir -p /opt/app /opt/logs

# Install Python dependencies
COPY requirements.txt /opt/
RUN pip install --no-cache-dir -r /opt/requirements.txt

# Copy application code
COPY src/ /opt/src/
COPY scripts/ /opt/scripts/
COPY .env /opt/

# Create non-root user
RUN adduser -u 888 --disabled-password --gecos "" appuser && chown -R appuser:appuser /opt /opt/src /opt/logs /opt/app
USER appuser

# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
  CMD curl -f http://localhost:8111/health || exit 1

CMD ["uvicorn", "src.api.main:app", "--host", "0.0.0.0", "--port", "8111", "--workers", "4"]
