services: redis: image: redis:7-alpine volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 postgres: image: pgvector/pgvector:pg16 environment: POSTGRES_USER: ${DB_USER:-fabledcurator} POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_DB: ${DB_NAME:-fabledcurator} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-fabledcurator}"] interval: 10s timeout: 5s retries: 5 web: image: git.fabledsword.com/bvandeusen/fabledcurator:dev command: ["web"] ports: - "${PORT:-8080}:8080" env_file: .env environment: &app_env DB_HOST: postgres DB_PORT: "5432" CELERY_BROKER_URL: redis://redis:6379/0 CELERY_RESULT_BACKEND: redis://redis:6379/0 volumes: - ./images:/images - ./import:/import - ./downloads:/downloads depends_on: postgres: { condition: service_healthy } redis: { condition: service_healthy } worker: image: git.fabledsword.com/bvandeusen/fabledcurator:dev command: ["worker"] environment: <<: *app_env CELERY_QUEUES: default,import,thumbnail,download CELERY_CONCURRENCY: "2" env_file: .env volumes: - ./images:/images - ./import:/import - ./downloads:/downloads depends_on: postgres: { condition: service_healthy } redis: { condition: service_healthy } scheduler: image: git.fabledsword.com/bvandeusen/fabledcurator:dev command: ["scheduler"] environment: <<: *app_env CELERY_QUEUES: maintenance,scan env_file: .env volumes: - ./images:/images - ./import:/import - ./downloads:/downloads depends_on: postgres: { condition: service_healthy } redis: { condition: service_healthy } ml-worker: image: git.fabledsword.com/bvandeusen/fabledcurator-ml:dev command: ["ml-worker"] environment: <<: *app_env env_file: .env volumes: - ./images:/images:ro - ./models:/models depends_on: postgres: { condition: service_healthy } redis: { condition: service_healthy } volumes: redis_data: postgres_data: