services: postgres: image: pgvector/pgvector:pg17 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres logging: driver: "json-file" options: max-size: "10m" max-file: "3" ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 3s timeout: 3s retries: 10 networks: - app-network redis: image: redis:7 ports: - "6379:6379" command: > --requirepass redissecret volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "-a", "redissecret", "ping"] interval: 3s timeout: 10s retries: 10 networks: - app-network minio: image: minio/minio command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin MINIO_API_CORS_ALLOW_ORIGIN: "*" ports: - "127.0.0.1:9000:9000" # Bind to localhost explicitly - "127.0.0.1:9001:9001" volumes: - minio_data:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 10s timeout: 5s retries: 5 networks: - app-network coturn: image: coturn/coturn:4.8.0 container_name: coturn restart: unless-stopped ports: - "3478:3478/udp" # TURN/STUN UDP - "3478:3478/tcp" # TURN/STUN TCP - "5349:5349/tcp" # TURNS (TLS) - "49152-49200:49152-49200/udp" # Relay ports volumes: - ./config/coturn/turnserver.conf:/etc/coturn/turnserver.conf:ro command: - "-c" - "/etc/coturn/turnserver.conf" networks: - app-network volumes: postgres_data: redis_data: minio_data: networks: app-network: driver: bridge