services: postgres: image: pgvector/pgvector:pg17 command: - "postgres" - "-c" - "log_min_duration_statement=1000" - "-c" - "log_destination=stderr" - "-c" - "log_line_prefix=%t [%p]: " environment: POSTGRES_DB: ${POSTGRES_DB:-stavrobot} POSTGRES_USER: ${POSTGRES_USER:-stavrobot} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-stavrobot} restart: unless-stopped healthcheck: test: ["CMD", "pg_isready", "-U", "${POSTGRES_USER:-stavrobot}", "-d", "${POSTGRES_DB:-stavrobot}"] interval: 2s timeout: 3s retries: 10 volumes: - ./data/postgres:/var/lib/postgresql/data app: build: . ports: - "10567:3000" environment: TZ: ${TZ:-UTC} PGHOST: postgres PGPORT: 5432 PGUSER: ${POSTGRES_USER:-stavrobot} PGPASSWORD: ${POSTGRES_PASSWORD:-stavrobot} PGDATABASE: ${POSTGRES_DB:-stavrobot} STAVROBOT_LOG_LEVEL: ${STAVROBOT_LOG_LEVEL:-info} CONFIG_PATH: /app/config/config.toml ALLOWLIST_PATH: /app/data/allowlist.json restart: unless-stopped volumes: - ./data/main:/app/config - ./data/app:/app/data - ./data/whatsapp:/app/data/whatsapp depends_on: postgres: condition: service_healthy python-runner: build: ./python-runner mem_limit: 1g pids_limit: 256 environment: TZ: ${TZ:-UTC} restart: unless-stopped volumes: - ./data/main:/root/config:ro plugin-runner: build: ./plugin-runner mem_limit: 1g pids_limit: 256 environment: TZ: ${TZ:-UTC} restart: unless-stopped volumes: - ./data/main:/root/config:ro - ./data/plugins:/plugins - ./cache/plugins:/cache coder: build: ./coder profiles: ["coder"] mem_limit: 4g pids_limit: 512 environment: TZ: ${TZ:-UTC} restart: unless-stopped volumes: - ./data/main:/root/config:ro - ./data/coder:/home/coder/.claude - ./data/plugins:/plugins - ./cache/plugins:/cache depends_on: app: condition: service_started pg-backup: image: pgvector/pgvector:pg17 entrypoint: ["/bin/bash", "/scripts/pg-backup.sh"] environment: TZ: ${TZ:-UTC} PGHOST: postgres PGUSER: ${POSTGRES_USER:-stavrobot} PGPASSWORD: ${POSTGRES_PASSWORD:-stavrobot} PGDATABASE: ${POSTGRES_DB:-stavrobot} BACKUP_INTERVAL_SECONDS: 3600 restart: unless-stopped volumes: - ./scripts:/scripts:ro - ./data/db-backups:/backups depends_on: postgres: condition: service_healthy signal-bridge: build: ./signal-bridge profiles: ["signal"] mem_limit: 512m restart: unless-stopped volumes: - ./data/main:/root/config:ro - ./data/signal-cli:/root/.local/share/signal-cli depends_on: app: condition: service_started