Files
ModelForge/docker-compose.node-agent.yml
T

60 lines
2.5 KiB
YAML

# Standalone outbound compute-node agent for a remote GPU server.
services:
node-agent:
# Production operators set MODELFORGE_NODE_AGENT_IMAGE to an immutable release tag or digest.
# The non-floating `local` fallback preserves the source-build workflow without ever selecting
# `latest` implicitly.
image: ${MODELFORGE_NODE_AGENT_IMAGE:-modelforge-node-agent:${MODELFORGE_VERSION:-local}}
build:
context: .
dockerfile: node-agent/Dockerfile
args:
# Without these the Dockerfile falls back to version 0.0.0 and empty revision/created
# labels, so a Compose-built agent carries no provenance at all while still being tagged
# with whatever MODELFORGE_VERSION happened to be set to. That is how production ended up
# running an image tagged 1.1.1 whose contents were 1.2.0.
MODELFORGE_VERSION: ${MODELFORGE_VERSION:-0.0.0}
MODELFORGE_COMMIT: ${MODELFORGE_COMMIT:-}
MODELFORGE_BUILT_AT: ${MODELFORGE_BUILT_AT:-}
hostname: ${MODELFORGE_AGENT_HOSTNAME:-modelforge-node-agent}
env_file:
- path: .env
required: false
environment:
MODELFORGE_AGENT_CONTROL_PLANE_URL: ${MODELFORGE_AGENT_CONTROL_PLANE_URL:-https://modelforge.example.invalid}
MODELFORGE_AGENT_ENROLLMENT_TOKEN: ${MODELFORGE_AGENT_ENROLLMENT_TOKEN:-}
MODELFORGE_AGENT_DISPLAY_NAME: ${MODELFORGE_AGENT_DISPLAY_NAME:-}
MODELFORGE_AGENT_IDENTITY_MODE: persisted
MODELFORGE_AGENT_ACCELERATOR_MODE: ${MODELFORGE_AGENT_ACCELERATOR_MODE:-nvidia}
MODELFORGE_AGENT_IDENTITY_FILE: /data/state/node-id
MODELFORGE_AGENT_CREDENTIAL_FILE: /data/state/node-credential
MODELFORGE_AGENT_STATE_FILE: /data/state/agent-state.json
MODELFORGE_AGENT_TLS_VERIFY: ${MODELFORGE_AGENT_TLS_VERIFY:-true}
MODELFORGE_AGENT_HF_TOKEN: ${MODELFORGE_HF_TOKEN:-}
volumes:
- ${MODELFORGE_AGENT_STATE_VOLUME:-node-agent-state}:/data/state
- ${MODELFORGE_AGENT_HF_CACHE_VOLUME:-hf-cache}:/data/hf-cache
- ${MODELFORGE_AGENT_ARTIFACT_VOLUME:-model-artifacts}:/data/artifacts
- ${MODELFORGE_AGENT_QUARANTINE_VOLUME:-quarantine}:/data/quarantine
read_only: true
tmpfs:
- /tmp:size=64m,mode=1777
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
volumes:
node-agent-state:
hf-cache:
model-artifacts:
quarantine: