# Multi-arch Dockerfile for ARCA (v1.5.0)
# Build:  docker buildx build --platform linux/amd64,linux/arm64 -t arca-agent .
# Run:    docker run -p 8000:8000 -p 8051:8051 arca-agent

FROM python:3.12-slim AS builder

ARG TARGETPLATFORM
ARG BUILDPLATFORM
RUN echo "Building for ${TARGETPLATFORM} on ${BUILDPLATFORM}"

RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    cmake \
    git \
    nmap \
    curl \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /build
COPY pyproject.toml setup.py MANIFEST.in LICENSE ./
COPY arca/ arca/
COPY docs/ docs/
COPY examples/ examples/

RUN pip install --no-cache-dir --upgrade pip wheel setuptools
RUN pip install --no-cache-dir -e ".[all]"

FROM python:3.12-slim AS runtime

RUN apt-get update && apt-get install -y --no-install-recommends \
    nmap \
    libstdc++6 \
    curl \
    ca-certificates \
    && rm -rf /var/lib/apt/lists/*

RUN useradd --create-home --shell /bin/bash arca
USER arca
WORKDIR /home/arca

COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
COPY --from=builder /usr/local/bin/arca /usr/local/bin/arca || true
COPY --from=builder /build/arca/ /usr/local/lib/python3.12/site-packages/arca/
COPY --from=builder /build/pyproject.toml /build/setup.py /build/LICENSE /home/arca/

RUN mkdir -p /home/arca/arca_outputs/{models,logs,reports,figures,backups,checkpoints} /home/arca/.arca/{audit,memory,models}

ENV ARCA_API_KEY=""
ENV ARCA_CORS_ORIGINS="*"
ENV ARCA_LOG_LEVEL="INFO"
ENV ARCA_KILL_SWITCH_FILE="/home/arca/.arca/KILL_SWITCH"
ENV ARCA_RATE_LIMIT="60"
ENV ARCA_RATE_WINDOW="60"

EXPOSE 8000 8051

HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
    CMD curl -sf http://localhost:8000/healthz || exit 1

LABEL org.opencontainers.image.title="ARCA Agent"
LABEL org.opencontainers.image.description="Autonomous Reinforcement Cyber Agent v1.5.0"
LABEL org.opencontainers.image.url="https://github.com/DipayanDasgupta/arca"
LABEL org.opencontainers.image.version="1.5.0"
LABEL org.opencontainers.image.licenses="MIT"

CMD ["arca", "serve", "--host", "0.0.0.0", "--port", "8000"]
