Minimal Docker image wrapping TimescaleDB HA (timescale/timescaledb-ha) under dockette/timescaledb on Docker Hub. Tags use the ha- prefix for the HA image line (e.g. ha-pg18-ts2.26 → upstream timescale/timescaledb-ha:pg18-ts2.26).
🕹 f3l1x.io | 💻 f3l1x | 🐦 @xf3l1x
TimescaleDB on PostgreSQL with the HA distribution image. Upstream docs: timescaledb-docker-ha.
This build adds SQL under /docker-entrypoint-initdb.d/ so common monitoring/contrib extensions are created on first initialization (empty data directory). Entries such as auto_explain are loaded via shared_preload_libraries only and are not separate extensions here.
Example matching the upstream HA image layout: default PGDATA is often /home/postgres/pgdata/data. Set PGDATA (and your volume mount) to match your deployment.
docker run --name some-timescaledb -p 5432:5432 \
-e POSTGRES_PASSWORD=secret \
-v tsdb-data:/home/postgres/pgdata \
dockette/timescaledb:ha-pg18-ts2.26Listen port is 5432. For a custom data path (e.g. Nomad mounting /pgdata), set PGDATA accordingly (for example /pgdata/data if that is where PostgreSQL should store cluster files).
If you bind-mount a host or alloc directory onto /docker-entrypoint-initdb.d, you replace the entire directory inside the container. Scripts shipped in this image (and upstream’s own init scripts) will not be visible unless your mount includes those files.
- Prefer dropping that mount and rely on the image’s
/docker-entrypoint-initdb.d/. - If you keep templated SQL in
local/init/, you must ship every required init file there (higher maintenance). - Init SQL runs only when
PGDATAis empty; existing clusters need manualCREATE EXTENSIONor a migration job.
After make build, you can run a one-off container with a fresh volume, POSTGRES_PASSWORD, wait for pg_isready, then psql -c '\dx' to confirm extensions (slower than make test).
| Image tag | Equivalent upstream |
|---|---|
dockette/timescaledb:ha-pg18-ts2.26 |
timescale/timescaledb-ha:pg18-ts2.26 |
dockette/timescaledb:latest |
same as current CI pin (rolling) |
This image is a thin republish: FROM timescale/timescaledb-ha:${TIMESCALEDB_HA_TAG} plus bundled init SQL.
Consider supporting f3l1x on GitHub Sponsors if you rely on this. Thanks for using it.