60 lines
1.3 KiB
Docker
60 lines
1.3 KiB
Docker
FROM python:3.14-slim AS base
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1
|
|
|
|
WORKDIR /app
|
|
RUN apt update && apt install make -y
|
|
|
|
ENV AGENT_USER="agent"
|
|
ENV WORKSPACE_DIR="/workspace/"
|
|
RUN useradd --shell /bin/bash $AGENT_USER \
|
|
&& mkdir -p $WORKSPACE_DIR /home/$AGENT_USER \
|
|
&& chown -R agent:agent $WORKSPACE_DIR /home/$AGENT_USER
|
|
|
|
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 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 apt install sudo -y && \
|
|
echo "agent ALL=(ALL) NOPASSWD: /usr/bin/apt*" >> /etc/sudoers
|
|
|
|
EXPOSE 8000
|
|
|
|
CMD ["make", "uvicorn-dev"]
|