trading-system-docs/red-queen-architecture/control-plane/cp2a1/Dockerfile

26 lines
1.1 KiB
Docker

# CP2A1 — Trusted Gate Evaluator (External Gate Enforcement Foundation)
# STRICTLY NON-PRODUCTIVE / NO AUTONOMY.
# Minimaler Container: python:3.12-slim, kein Shell-Zugriff, read-only FS.
#
# HINWEIS zum User: Der Evaluator MUSS die root-owned CP1-State-Dateien
# (/opt/control-plane/state/, root:root 0700/600) lesen. Daher laeuft der
# Container als root (container-intern, KEIN Host-Root — konsistent mit dem
# CP2D-Ground-Truth-Muster). Die Härtung erfolgt ueber:
# --cap-drop ALL --no-new-privileges --read-only --network <internal>
# RO-State-Mount, kein Docker-Socket, keine Credentials, keine Egress.
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1
WORKDIR /app
# Nur die Evaluator-Dateien (kein Build-Artefakt, kein Test-Code im Image)
COPY gate_evaluator.py /app/gate_evaluator.py
COPY control_reader.py /app/control_reader.py
# Audit-Verzeichnis (eigenes Volume, append-only gegen RQ-Manipulation)
RUN mkdir -p /audit
# Kein Shell-Entrypoint: direkt Python. Kein /bin/sh im CMD.
ENTRYPOINT ["python3", "/app/gate_evaluator.py"]