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>
46 lines
2.0 KiB
Docker
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"]
|