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).
108 lines
2.9 KiB
YAML
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
|