25 lines
1.6 KiB
Markdown
25 lines
1.6 KiB
Markdown
---
|
|
name: TimescaleDB-HA Docker image facts
|
|
description: Empirically verified facts about timescale/timescaledb-ha used in TRM compose files
|
|
type: reference
|
|
---
|
|
|
|
# TimescaleDB-HA Docker image facts
|
|
|
|
**CORRECTED after task 1.1 live boot (2026-05-01).**
|
|
|
|
- **Image pinned in TRM**: `timescale/timescaledb-ha:pg16.6-ts2.17.2-all`
|
|
- `:pg16-latest` does NOT exist on Docker Hub — it 404s at pull time.
|
|
- The `-all` suffix here means "all extensions bundled" (TimescaleDB + PostGIS + more), NOT "all PG versions".
|
|
- Always pin a concrete `pgX.Y-tsA.B.C-all` tag; floating tags are unreliable for this image.
|
|
- **PGDATA directory**: `/home/postgres/pgdata/data`
|
|
- NOT `/pgdata`, NOT `/var/lib/postgresql/data`.
|
|
- Setting `PGDATA=/pgdata` and mounting a volume to `/pgdata` causes initdb to fail with "could not change permissions of directory".
|
|
- compose.dev.yaml correctly sets `PGDATA: /home/postgres/pgdata/data` and mounts to the same path.
|
|
- **PostGIS**: Binaries are bundled in the `-all` image but the extension is NOT auto-created on user databases.
|
|
- Directus logs a benign warning: `PostGIS isn't installed. Geometry type support will be limited.`
|
|
- Must be created explicitly: `CREATE EXTENSION IF NOT EXISTS postgis;` — lands in db-init Phase 2.
|
|
- **Environment variables**: `POSTGRES_USER`, `POSTGRES_PASSWORD`, `POSTGRES_DB` (same as official postgres image).
|
|
- **Healthcheck**: `pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB` (double-$ in compose YAML to escape interpolation).
|
|
- **`psql` / `pg_isready` in the Directus container**: Installed via `apk add --no-cache postgresql16-client` in the Dockerfile (task 1.1). Available on PATH at runtime.
|