# {{projectName}} infra docker compose — postgres only.
#
# Brought up by `pnpm db:up`. Apps run natively via `pnpm dev` against
# this. For full-docker dev (apps in containers too), use
# `pnpm dev:docker` which adds docker-compose.dev.yml on top.
#
# Port 5433 (NOT default 5432) so it never clashes with a host
# Postgres install.

services:
  postgres:
    image: postgres:17-alpine
    container_name: {{projectName}}-postgres
    restart: unless-stopped
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: app
      POSTGRES_DB: {{projectNameSnake}}
    ports:
      - "5433:5432"
    command:
      - "postgres"
      # wal_level=logical so CDC subscribers (workflow run mirror,
      # logical-replication consumers) can subscribe via pgoutput.
      # Harmless when nothing's subscribing.
      - "-c"
      - "wal_level=logical"
      - "-c"
      - "max_wal_senders=4"
      - "-c"
      - "max_replication_slots=4"
    volumes:
      - {{projectName}}-pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U app -d {{projectNameSnake}}"]
      interval: 2s
      timeout: 2s
      retries: 10

volumes:
  {{projectName}}-pgdata:
