FROM python:3.14-slim AS base

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1

WORKDIR /app
RUN apt update && apt install make sudo -y

ENV AGENT_USER="agent"
ENV WORKSPACE_DIR="/workspace/"
ENV INTERNAL_DATA_DIR="/internal_data/"
RUN useradd --shell /bin/bash $AGENT_USER \
    && mkdir -p $WORKSPACE_DIR /home/$AGENT_USER \
    && chown -R agent:agent $WORKSPACE_DIR /home/$AGENT_USER
RUN mkdir -p $INTERNAL_DATA_DIR  \
    && chown -R root:root $INTERNAL_DATA_DIR \
    && chmod o-rwx $INTERNAL_DATA_DIR

FROM base AS builder

RUN apt install git -y
RUN pip install uv

COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-install-project --no-dev
RUN uv pip install git+https://git.lambda.coredump.ru/platform/agent_api.git

FROM base AS production

COPY --from=builder /app/.venv /app/.venv
ENV PATH="/app/.venv/bin:$PATH"

COPY src/ /app/src/
COPY configs/ /app/configs/
COPY Makefile ./
COPY .mk/ ./.mk/
RUN chown root:root /app && chmod 700 /app
RUN apt install sudo -y && \
    echo "agent ALL=(ALL) NOPASSWD: /usr/bin/apt*" >> /etc/sudoers

EXPOSE 8000

CMD ["make", "uvicorn-prod"]

FROM base AS development

RUN pip install uv

COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-install-project

COPY --from=agent_api . /agent_api/
RUN uv pip install -e /agent_api/

ENV PATH="/app/.venv/bin:$PATH"

COPY Makefile ./
COPY .mk/ ./.mk/
RUN chown root:root /app && chmod 700 /app
RUN echo "agent ALL=(ALL) NOPASSWD: /usr/bin/apt*" >> /etc/sudoers

EXPOSE 8000

CMD ["make", "uvicorn-dev"]
