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.
This commit is contained in:
Manohar Gupta 2026-05-23 14:22:15 +05:30
parent 9b9b551463
commit c4304615ec

View file

@ -1,8 +1,11 @@
version: '3.8' # Local development services for Tia (Postgres + Redis).
# Postgres major version is pinned to match production.
services: services:
postgres: postgres:
image: pgvector/pgvector:pg16 # 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 container_name: tia-postgres
environment: environment:
POSTGRES_DB: tia_dev POSTGRES_DB: tia_dev
@ -11,7 +14,9 @@ services:
ports: ports:
- "5433:5432" - "5433:5432"
volumes: volumes:
- ./data/postgres:/var/lib/postgresql/data # 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 - ./docker/init-db:/docker-entrypoint-initdb.d
healthcheck: healthcheck:
test: ["CMD-SHELL", "pg_isready -U tia -d tia_dev"] test: ["CMD-SHELL", "pg_isready -U tia -d tia_dev"]