FROM python:3.11-slim

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    PYTHONPATH=/app

WORKDIR /app

COPY pyproject.toml /app/pyproject.toml
RUN pip install --no-cache-dir \
      "sqlalchemy>=2.0" \
      "psycopg[binary]>=3.1" \
      "pydantic>=2.7" \
      "pydantic-settings>=2.2" \
      "httpx>=0.27" \
      "websocket-client>=1.8"

COPY src /app/src
COPY scripts /app/scripts
COPY migrations /app/migrations
COPY data /app/data
COPY docs /app/docs
COPY SESSION.md /app/SESSION.md
COPY TASKS.md /app/TASKS.md
COPY src/web /app/src/web
COPY .env.example /app/.env.example
COPY README.md /app/README.md

EXPOSE 8000

HEALTHCHECK --interval=30s --timeout=5s --retries=3 CMD python -c "from urllib.request import urlopen; import sys; sys.exit(0 if urlopen('http://127.0.0.1:8000/health').status == 200 else 1)"

CMD ["python", "scripts/run_api_server.py"]
