Dockerfile.orch — multi-mode image (coordinator | agent): - coordinator: runs cf-orch coordinator on $CF_ORCH_PORT (default 7700) - agent: connects to $CF_COORDINATOR_URL, serves $CF_AGENT_GPU_IDS .forgejo/workflows/docker.yml — publishes on every vN.N.N tag: - ghcr.io/circuit-forge/cf-orch:latest - ghcr.io/circuit-forge/cf-orch:vX.Y.Z - Layer cache via GHA cache backend Closes #19. Bumps to v0.6.0.
53 lines
1.9 KiB
Text
53 lines
1.9 KiB
Text
# cf-orch coordinator image
|
|
# Includes the coordinator + agent; designed for paid+ multi-node deployments.
|
|
#
|
|
# Usage (coordinator node):
|
|
# docker run -d \
|
|
# -p 7700:7700 \
|
|
# -e HEIMDALL_URL=https://license.circuitforge.tech \
|
|
# -e HEIMDALL_MIN_TIER=paid \
|
|
# -e CF_ORCH_AUTH_SECRET=<secret> \
|
|
# ghcr.io/circuit-forge/cf-orch:latest coordinator
|
|
#
|
|
# Usage (GPU agent node — connects back to coordinator):
|
|
# docker run -d \
|
|
# --gpus all \
|
|
# -e CF_COORDINATOR_URL=http://<coordinator-ip>:7700 \
|
|
# ghcr.io/circuit-forge/cf-orch:latest agent
|
|
#
|
|
# Environment variables
|
|
# ─────────────────────
|
|
# CF_ORCH_PORT Coordinator listen port (default: 7700)
|
|
# HEIMDALL_URL Enable license auth (omit for LAN-only / self-hosted)
|
|
# HEIMDALL_MIN_TIER Minimum tier required (default: paid)
|
|
# CF_ORCH_AUTH_SECRET Shared secret with Heimdall /licenses/verify
|
|
# CF_COORDINATOR_URL Agent mode: coordinator URL to register with
|
|
# CF_AGENT_GPU_IDS Comma-separated GPU indices for agent (default: 0)
|
|
|
|
FROM python:3.12-slim
|
|
|
|
LABEL org.opencontainers.image.source="https://git.opensourcesolarpunk.com/Circuit-Forge/circuitforge-core"
|
|
LABEL org.opencontainers.image.description="cf-orch coordinator and agent for CircuitForge multi-node GPU orchestration"
|
|
LABEL org.opencontainers.image.licenses="BSL-1.1"
|
|
|
|
WORKDIR /app
|
|
|
|
# System deps — httpx needs curl for connection reuse; avoid full dev toolchain
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install cf-core with the resources extra (coordinator + agent deps)
|
|
COPY pyproject.toml README.md ./
|
|
COPY circuitforge_core/ ./circuitforge_core/
|
|
|
|
RUN pip install --no-cache-dir ".[resources,manage]"
|
|
|
|
ENV CF_ORCH_PORT=7700
|
|
EXPOSE 7700
|
|
|
|
COPY docker/orch-entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
CMD ["coordinator"]
|