tia/docker-compose.dev.yml
Mannu c4304615ec chore(dev): align dev Postgres to pg18 matching production
Production runs Postgres 18; the dev compose file pinned pg16. A pg_dump
from prod (v18) cannot be restored by a v16 pg_restore — the dump header
is rejected. Matching the major version fixes restores and removes a
latent source of dev/prod behaviour drift.

Also adopts the pg18 image's data-directory convention: the volume now
mounts at /var/lib/postgresql (the image places data in a version
subdirectory), and drops the obsolete compose 'version' key.
2026-05-23 14:22:15 +05:30

38 lines
No EOL
1.1 KiB
YAML

# 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