ARG PYTHON_BASE_IMAGE=python:3.12-slim

FROM ghcr.io/astral-sh/uv:0.11.2 AS uv-tool
FROM ${PYTHON_BASE_IMAGE} AS builder
COPY --from=uv-tool /uv /usr/local/bin/uv
ENV UV_PROJECT_ENVIRONMENT=/opt/venv \
    UV_PYTHON_DOWNLOADS=never \
    UV_LINK_MODE=copy
WORKDIR /workspace
COPY . /workspace/
RUN uv sync --locked --no-default-groups --no-editable \
        --python /usr/local/bin/python \
        --package nlalpha-strategy \
        --package nlalpha-family-cta \
        --package nlalpha-talib \
        --package nlalpha-performance \
    && uv pip check --python /opt/venv/bin/python

FROM ${PYTHON_BASE_IMAGE} AS runtime
RUN apt-get update && apt-get install -y --no-install-recommends libstdc++6 libgomp1 && \
    rm -rf /var/lib/apt/lists/* && \
    groupadd -r appuser && useradd -r -g appuser appuser
WORKDIR /app
COPY --from=builder /opt/venv /opt/venv
ENV PATH="/opt/venv/bin:${PATH}" \
    NLALPHA_HOST=0.0.0.0 \
    NLALPHA_PORT=8000 \
    PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1
USER appuser
EXPOSE 8000
HEALTHCHECK --interval=10s --timeout=5s --start-period=10s --retries=3 \
    CMD python -c "import os, urllib.request; urllib.request.urlopen('http://127.0.0.1:' + os.environ['NLALPHA_PORT'] + '/health', timeout=4)"
CMD ["python", "-m", "nlalpha_strategy.server"]
