services: sc_redis: image: redis:7-alpine restart: unless-stopped ports: - "6379:6379" volumes: - redis-data:/data sc_postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: streamclipper POSTGRES_PASSWORD: streamclipper POSTGRES_DB: streamclipper ports: - "5432:5432" volumes: - postgres-data:/var/lib/postgresql/data sc_api_daemon: build: context: . dockerfile: apps/api-daemon/Dockerfile restart: unless-stopped environment: REDIS_URL: redis://sc_redis:6379 DATABASE_URL: postgresql://streamclipper:streamclipper@sc_postgres:5432/streamclipper SHARED_MEDIA_ROOT: /shared-media POLL_INTERVAL_MS: ${POLL_INTERVAL_MS:-60000} SEGMENT_TIME_SEC: ${SEGMENT_TIME_SEC:-900} API_DAEMON_PORT: ${API_DAEMON_PORT:-4001} FORCE_LIVE_URL: ${FORCE_LIVE_URL:-} TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN:-} TELEGRAM_CHAT_ID: ${TELEGRAM_CHAT_ID:-} volumes: - shared-media:/shared-media ports: - "4001:4001" depends_on: - sc_redis - sc_postgres sc_heavy_worker: build: context: . dockerfile: apps/worker/Dockerfile restart: unless-stopped environment: REDIS_URL: redis://sc_redis:6379 DATABASE_URL: postgresql://streamclipper:streamclipper@sc_postgres:5432/streamclipper SHARED_MEDIA_ROOT: /shared-media SEGMENT_TIME_SEC: ${SEGMENT_TIME_SEC:-900} OPENAI_API_KEY: ${OPENAI_API_KEY:-} TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN:-} TELEGRAM_CHAT_ID: ${TELEGRAM_CHAT_ID:-} volumes: - shared-media:/shared-media depends_on: - sc_redis - sc_postgres sc_frontend: build: context: . dockerfile: apps/frontend/Dockerfile restart: unless-stopped environment: DATABASE_URL: postgresql://streamclipper:streamclipper@sc_postgres:5432/streamclipper ports: - "3000:3000" depends_on: - sc_postgres volumes: redis-data: postgres-data: shared-media: