Files
coordinator/Dockerfile
ClaudeBotandClaude Opus 4.7 645778d2b7 Switch mount paths from /mnt/cache to /mnt/user; broaden daemon mount to multica/
On unraid, /mnt/user is the FUSE layer that applies share-routing policy
(cache-first, mover, include/exclude). /mnt/cache bypasses that routing.
Default rule: container bind mounts use /mnt/user/... unless there's a
specific reason to pin to cache.

Also broadens the daemon mount from just /multica/rounds to the whole
/multica namespace. This means future subpaths (agents/<slug>/ for the
credentials migration, coordinator-state/, etc.) are already visible
without another daemon recreate. Per user: "multica both includes shared
and not shared" — one mount covers both.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 01:33:04 +02:00

46 lines
2.0 KiB
Docker

# Coordinator container — runs the Pipeline A review loop.
#
# Design:
# - Minimal Python 3.11 base.
# - ``git`` installed for artifact clone.
# - Code mounted from /mnt/user/appdata/multica/coordinator at runtime
# (bind mount), so edits on the host are live without rebuilding.
# - Writable state at /var/lib/coordinator (bind-mounted to
# /mnt/user/appdata/multica/coordinator-state on host).
# - Shared rounds tree at /mnt/user/appdata/multica/rounds — mounted at the
# SAME absolute path inside every judge daemon so filesystem paths in
# chat-task prompts resolve identically in both sides.
# - Network: ``multica`` (so COORDINATOR_SERVER_URL can resolve
# ``http://multica-backend:8080`` directly).
#
# Runtime env vars (set on ``docker run``):
# COORDINATOR_SERVER_URL http://multica-backend:8080
# COORDINATOR_WORKSPACE_ID <multica workspace id>
# COORDINATOR_TOKEN mul_... (user PAT; required for chat endpoints)
# COORDINATOR_GITEA_BASE_URL https://git.wylab.me (optional)
# COORDINATOR_GIT_USERNAME m-coordinator (optional)
# COORDINATOR_GIT_TOKEN <gitea PAT, read-only> (optional; ephemeral)
# COORDINATOR_ROUNDS_ROOT /mnt/user/appdata/multica/rounds
# COORDINATOR_STATE_DIR /var/lib/coordinator
FROM python:3.11-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends git ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Runtime dirs — volume mount points.
RUN mkdir -p /var/lib/coordinator /mnt/user/appdata/multica/rounds
# Install the package (will be overlaid by a bind mount at runtime, but having
# it installed lets the image boot without a bind mount for smoke tests).
WORKDIR /opt/coordinator
COPY pyproject.toml README.md ./
COPY src ./src
RUN pip install --no-cache-dir -e .
ENV PYTHONUNBUFFERED=1 \
COORDINATOR_STATE_DIR=/var/lib/coordinator \
COORDINATOR_ROUNDS_ROOT=/mnt/user/appdata/multica/rounds
ENTRYPOINT ["coordinator"]