Adds service definitions for Defender, Scout, Farmer, Pacifist, Phalanx, Raider, Nomad, Opportunist, Assassin, and Kamikaze bots on ports 8087-8096. Expands the bot field from 6 to 16 entries for rating diversity. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
282 lines
7.2 KiB
YAML
282 lines
7.2 KiB
YAML
# AI Code Battle - Bot Host Deployment
|
|
# Runs all 16 strategy bots as a single deployable unit
|
|
#
|
|
# Usage:
|
|
# docker-compose -f docker-compose.bots.yml up -d
|
|
#
|
|
# Environment variables (set in .env or pass directly):
|
|
# BOT_SECRET_RANDOM - Secret for RandomBot
|
|
# BOT_SECRET_GATHERER - Secret for GathererBot
|
|
# BOT_SECRET_RUSHER - Secret for RusherBot
|
|
# BOT_SECRET_GUARDIAN - Secret for GuardianBot
|
|
# BOT_SECRET_SWARM - Secret for SwarmBot
|
|
# BOT_SECRET_HUNTER - Secret for HunterBot
|
|
# BOT_SECRET_DEFENDER - Secret for DefenderBot
|
|
# BOT_SECRET_SCOUT - Secret for ScoutBot
|
|
# BOT_SECRET_FARMER - Secret for FarmerBot
|
|
# BOT_SECRET_PACIFIST - Secret for PacifistBot
|
|
# BOT_SECRET_PHALANX - Secret for PhalanxBot
|
|
# BOT_SECRET_RAIDER - Secret for RaiderBot
|
|
# BOT_SECRET_NOMAD - Secret for NomadBot
|
|
# BOT_SECRET_OPPORTUNIST - Secret for OpportunistBot
|
|
# BOT_SECRET_ASSASSIN - Secret for AssassinBot
|
|
# BOT_SECRET_KAMIKAZE - Secret for KamikazeBot
|
|
|
|
services:
|
|
random:
|
|
build:
|
|
context: ./bots/random
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8081:8080"
|
|
environment:
|
|
- BOT_PORT=8080
|
|
- BOT_SECRET=${BOT_SECRET_RANDOM:-dev-secret-random}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
gatherer:
|
|
build:
|
|
context: ./bots/gatherer
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8082:8080"
|
|
environment:
|
|
- BOT_PORT=8080
|
|
- BOT_SECRET=${BOT_SECRET_GATHERER:-dev-secret-gatherer}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
rusher:
|
|
build:
|
|
context: ./bots/rusher
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8083:8082"
|
|
environment:
|
|
- BOT_PORT=8082
|
|
- BOT_SECRET=${BOT_SECRET_RUSHER:-dev-secret-rusher}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8082/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
guardian:
|
|
build:
|
|
context: ./bots/guardian
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8084:8083"
|
|
environment:
|
|
- BOT_PORT=8083
|
|
- BOT_SECRET=${BOT_SECRET_GUARDIAN:-dev-secret-guardian}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8083/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
swarm:
|
|
build:
|
|
context: ./bots/swarm
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8085:8084"
|
|
environment:
|
|
- BOT_PORT=8084
|
|
- BOT_SECRET=${BOT_SECRET_SWARM:-dev-secret-swarm}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8084/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
hunter:
|
|
build:
|
|
context: ./bots/hunter
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8086:8085"
|
|
environment:
|
|
- BOT_PORT=8085
|
|
- BOT_SECRET=${BOT_SECRET_HUNTER:-dev-secret-hunter}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8085/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
# ── Phase 13 expansion bots ──────────────────────────────────────────────
|
|
|
|
defender:
|
|
build:
|
|
context: ./bots/defender
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8087:8080"
|
|
environment:
|
|
- BOT_PORT=8080
|
|
- BOT_SECRET=${BOT_SECRET_DEFENDER:-dev-secret-defender}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
scout:
|
|
build:
|
|
context: ./bots/scout
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8088:8080"
|
|
environment:
|
|
- BOT_PORT=8080
|
|
- BOT_SECRET=${BOT_SECRET_SCOUT:-dev-secret-scout}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
farmer:
|
|
build:
|
|
context: ./bots/farmer
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8089:8080"
|
|
environment:
|
|
- BOT_PORT=8080
|
|
- BOT_SECRET=${BOT_SECRET_FARMER:-dev-secret-farmer}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
pacifist:
|
|
build:
|
|
context: ./bots/pacifist
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8090:8080"
|
|
environment:
|
|
- BOT_PORT=8080
|
|
- BOT_SECRET=${BOT_SECRET_PACIFIST:-dev-secret-pacifist}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
phalanx:
|
|
build:
|
|
context: ./bots/phalanx
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8091:8090"
|
|
environment:
|
|
- BOT_PORT=8090
|
|
- BOT_SECRET=${BOT_SECRET_PHALANX:-dev-secret-phalanx}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8090/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
raider:
|
|
build:
|
|
context: ./bots/raider
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8092:8086"
|
|
environment:
|
|
- BOT_PORT=8086
|
|
- BOT_SECRET=${BOT_SECRET_RAIDER:-dev-secret-raider}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8086/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
nomad:
|
|
build:
|
|
context: ./bots/nomad
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8093:8080"
|
|
environment:
|
|
- BOT_PORT=8080
|
|
- BOT_SECRET=${BOT_SECRET_NOMAD:-dev-secret-nomad}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
opportunist:
|
|
build:
|
|
context: ./bots/opportunist
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8094:8080"
|
|
environment:
|
|
- BOT_PORT=8080
|
|
- BOT_SECRET=${BOT_SECRET_OPPORTUNIST:-dev-secret-opportunist}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
assassin:
|
|
build:
|
|
context: ./bots/assassin
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8095:8082"
|
|
environment:
|
|
- BOT_PORT=8082
|
|
- BOT_SECRET=${BOT_SECRET_ASSASSIN:-dev-secret-assassin}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8082/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
kamikaze:
|
|
build:
|
|
context: ./bots/kamikaze
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8096:8080"
|
|
environment:
|
|
- BOT_PORT=8080
|
|
- BOT_SECRET=${BOT_SECRET_KAMIKAZE:-dev-secret-kamikaze}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|