version: '3.8' services: postgres: image: postgres:16-alpine container_name: wardrobe_postgres restart: always environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: development_password_change_me POSTGRES_DB: wardrobe_db ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d wardrobe_db"] interval: 5s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: wardrobe_redis restart: always ports: - "6380:6379" volumes: - redis_data:/data healthcheck: test: ["CMD-SHELL", "redis-cli ping | grep PONG"] interval: 5s timeout: 5s retries: 5 qdrant: image: qdrant/qdrant:latest container_name: wardrobe_qdrant restart: always ports: - "6333:6333" - "6334:6334" volumes: - qdrant_data:/qdrant/storage # Qdrant image ships no curl/wget; use bash /dev/tcp to probe the REST port. healthcheck: test: ["CMD", "bash", "-c", "exec 3<>/dev/tcp/localhost/6333"] interval: 10s timeout: 5s retries: 5 volumes: postgres_data: redis_data: qdrant_data: