# docker-compose.federated.yml — Federated tier overlay # # USAGE: # docker compose -f docker-compose.federated.yml --profile federated up -d # # This file is a standalone overlay for the Mosaic federated tier. # It is NOT an extension of docker-compose.yml — it defines its own services # and named volumes so it can run independently of the base dev stack. # # IMPORTANT — HOST PORT CONFLICTS: # The federated services bind the same host ports as the base dev stack # (5433 for Postgres, 6380 for Valkey). You must stop the base dev stack # before starting the federated stack on the same machine: # docker compose down # docker compose -f docker-compose.federated.yml --profile federated up -d # # pgvector extension: # The vector extension is created automatically at first boot via # ./infra/pg-init/01-extensions.sql (CREATE EXTENSION IF NOT EXISTS vector). # # Tier configuration: # Used by `mosaic` instances configured with `tier: federated`. # DEFAULT_FEDERATED_CONFIG points at: # postgresql://mosaic:mosaic@localhost:5433/mosaic services: postgres-federated: image: pgvector/pgvector:pg17 profiles: [federated] ports: - '${PG_FEDERATED_HOST_PORT:-5433}:5432' environment: POSTGRES_USER: mosaic POSTGRES_PASSWORD: mosaic POSTGRES_DB: mosaic volumes: - pg_federated_data:/var/lib/postgresql/data - ./infra/pg-init:/docker-entrypoint-initdb.d:ro healthcheck: test: ['CMD-SHELL', 'pg_isready -U mosaic'] interval: 5s timeout: 3s retries: 5 valkey-federated: image: valkey/valkey:8-alpine profiles: [federated] ports: - '${VALKEY_FEDERATED_HOST_PORT:-6380}:6379' volumes: - valkey_federated_data:/data healthcheck: test: ['CMD', 'valkey-cli', 'ping'] interval: 5s timeout: 3s retries: 5 volumes: pg_federated_data: valkey_federated_data: