# Local development services for Tia (Postgres + Redis).
# Postgres major version is pinned to match production.
services:
  postgres:
    # pg18 to match production (Hetzner prod runs Postgres 18).
    # Keeping dev on the same major version avoids dump/restore mismatches
    # and version-specific behaviour drift.
    image: pgvector/pgvector:pg18
    container_name: tia-postgres
    environment:
      POSTGRES_DB: tia_dev
      POSTGRES_USER: tia
      POSTGRES_PASSWORD: tia_local_dev
    ports:
      - "5433:5432"
    volumes:
      # pg18 image convention: mount at /var/lib/postgresql (NOT .../data).
      # The image places data in a version-specific subdirectory under it.
      - ./data/postgres:/var/lib/postgresql
      - ./docker/init-db:/docker-entrypoint-initdb.d
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U tia -d tia_dev"]
      interval: 5s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    container_name: tia-redis
    ports:
      - "6380:6379"
    volumes:
      - ./data/redis:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 3s
      retries: 5