promptlooper/docker-compose.yml
John Lightner 3c5fdace31 MAESTRO: Update docker-compose.yml with corrected XPLTD conventions
Fixed DATABASE_URL to use standard postgresql:// scheme, hardcoded DB
credentials for dev simplicity, added API_KEY pass-through, set worker
working_dir, and made JWT_SECRET optional with dev default. All 5 services:
db (:5434), redis, api (MCP :8401), worker (Celery), web (:8400).
2026-04-07 01:42:58 -05:00

108 lines
2.9 KiB
YAML

name: xpltd_promptlooper
networks:
promptlooper:
driver: bridge
ipam:
config:
- subnet: 172.33.0.0/24
services:
promptlooper-db:
image: postgres:16-alpine
container_name: promptlooper-db
restart: unless-stopped
networks:
- promptlooper
ports:
- "5434:5432"
environment:
POSTGRES_USER: promptlooper
POSTGRES_PASSWORD: promptlooper
POSTGRES_DB: promptlooper
volumes:
- /vmPool/r/services/promptlooper_db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U promptlooper"]
interval: 10s
timeout: 5s
retries: 5
promptlooper-redis:
image: redis:7-alpine
container_name: promptlooper-redis
restart: unless-stopped
networks:
- promptlooper
volumes:
- /vmPool/r/services/promptlooper_redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
promptlooper-api:
build:
context: .
dockerfile: docker/Dockerfile
target: api
container_name: promptlooper-api
restart: unless-stopped
networks:
- promptlooper
ports:
- "8401:8401" # MCP server
environment:
DATABASE_URL: postgresql://promptlooper:promptlooper@promptlooper-db:5432/promptlooper
REDIS_URL: redis://promptlooper-redis:6379/0
JWT_SECRET: ${JWT_SECRET:-dev-secret-change-in-production}
API_KEY: ${API_KEY:-}
DEFAULT_ENDPOINT_URL: ${DEFAULT_ENDPOINT_URL:-}
DEFAULT_ENDPOINT_KEY: ${DEFAULT_ENDPOINT_KEY:-}
MAX_CONCURRENT_RUNS: ${MAX_CONCURRENT_RUNS:-4}
MAX_TOKENS_PER_SWEEP: ${MAX_TOKENS_PER_SWEEP:-0}
MCP_ENABLED: ${MCP_ENABLED:-true}
MCP_PORT: "8401"
depends_on:
promptlooper-db:
condition: service_healthy
promptlooper-redis:
condition: service_healthy
promptlooper-worker:
build:
context: .
dockerfile: docker/Dockerfile
target: api
container_name: promptlooper-worker
restart: unless-stopped
networks:
- promptlooper
command: celery -A worker:celery_app worker --loglevel=info --concurrency=${MAX_CONCURRENT_RUNS:-4}
working_dir: /app/backend
environment:
DATABASE_URL: postgresql://promptlooper:promptlooper@promptlooper-db:5432/promptlooper
REDIS_URL: redis://promptlooper-redis:6379/0
DEFAULT_ENDPOINT_URL: ${DEFAULT_ENDPOINT_URL:-}
DEFAULT_ENDPOINT_KEY: ${DEFAULT_ENDPOINT_KEY:-}
MAX_CONCURRENT_RUNS: ${MAX_CONCURRENT_RUNS:-4}
depends_on:
promptlooper-db:
condition: service_healthy
promptlooper-redis:
condition: service_healthy
promptlooper-web:
build:
context: .
dockerfile: docker/Dockerfile
target: web
container_name: promptlooper-web
restart: unless-stopped
networks:
- promptlooper
ports:
- "8400:80"
depends_on:
- promptlooper-api