services: rabbit: image: rabbitmq:3-management-alpine container_name: rabbit ports: - "5672:5672" - "15672:15672" environment: RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER:-admin} RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS:-secret123} healthcheck: test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped postgres: image: postgres:16-alpine container_name: postgres ports: - "5432:5432" environment: POSTGRES_USER: ${POSTGRES_USER:-pipeline} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-pipeline_secret} POSTGRES_DB: ${POSTGRES_DB:-pipeline} volumes: - postgres_data:/var/lib/postgresql/data - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql:ro healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-pipeline} -d ${POSTGRES_DB:-pipeline}"] interval: 5s timeout: 5s retries: 10 start_period: 15s restart: unless-stopped watcher: build: ./watcher container_name: watcher env_file: .env volumes: - ${STORAGE_ROOT:-./storage}:/data/storage environment: STORAGE_ROOT: /data/storage depends_on: rabbit: condition: service_healthy restart: unless-stopped transcribe: build: ./workers/transcribe container_name: transcribe env_file: .env volumes: - ${STORAGE_ROOT:-./storage}:/data/storage - ./workers/transcribe/configs:/app/configs:ro environment: STORAGE_ROOT: /data/storage depends_on: rabbit: condition: service_healthy restart: unless-stopped tagging: build: ./workers/tagging container_name: tagging env_file: .env volumes: - ${STORAGE_ROOT:-./storage}:/data/storage - ./.env:/config/.env:ro environment: STORAGE_ROOT: /data/storage DOTENV_PATH: /config/.env depends_on: rabbit: condition: service_healthy postgres: condition: service_healthy restart: unless-stopped analyse: build: ./workers/analyse container_name: analyse env_file: .env volumes: - ${STORAGE_ROOT:-./storage}:/data/storage - ./.env:/config/.env:ro environment: STORAGE_ROOT: /data/storage DOTENV_PATH: /config/.env depends_on: rabbit: condition: service_healthy postgres: condition: service_healthy restart: unless-stopped volumes: postgres_data: