From 161053606f0b86bacaf825cebfd1ccd6bd430d4f Mon Sep 17 00:00:00 2001 From: Vinicios Lugli Date: Sun, 15 Feb 2026 23:50:57 -0300 Subject: [PATCH] feat: add PostgreSQL with PgDog template (#681) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add PostgreSQL with PgDog template Add postgres-pgdog template providing PostgreSQL database with PgDog connection pooler, load balancer, and horizontal scaling proxy. Modern alternative to PgBouncer with multi-threading support. - Configurable PostgreSQL (default: 18-alpine) and PgDog (default: v0.1.26) images - Optional admin interface on port 6433 - Includes healthcheck and dependency management * 🐛 fix(postgres-pgdog): add config mounts and fix postgres volume path - Add [[config.mounts]] for pgdog.toml and users.toml - Mount config files from ../files/ in docker-compose - Change postgres volume to /var/lib/postgresql (postgres 18+ standard) - Add explicit command with config paths to prevent warnings * 🐛 fix(postgres-pgdog): correct binary path and use default config locations - Mount configs to /pgdog/ (default WorkingDir) instead of /etc/pgdog/ - Remove explicit command (binary is /usr/local/bin/pgdog, not /pgdog/pgdog) - Use image's default CMD with default config paths * 🐛 fix(postgres-pgdog): remove invalid admin_port config field - Remove admin_port from [general] section (not a valid field) - Admin DB uses same port 6432 with special database name - Remove commented admin domain config * 🐛 fix(postgres-pgdog): enable external access via fixed port mapping - Add fixed port 6432:6432 to postgres-pgdog service - Remove HTTP domain config (incompatible with TCP protocol) - Add comment for internal-only option Fixes UnsupportedStartup errors when using domain config for PostgreSQL protocol access. * 🐛 fix(postgres-pgdog): use standard port format per convention - Change port mapping from '6432:6432' to '6432' format - Follows Dokploy template convention for port declarations - External access requires checking Dokploy UI for assigned host port * 📝 docs(postgres-pgdog): clarify port settings comment * 🐛 fix(postgres-pgdog): default to internal access with opt-in external port - Remove obsolete version field - Port mapping commented by default for security - Users uncomment to enable external access on port 6432 --- blueprints/postgres-pgdog/docker-compose.yml | 33 +++++++++++++++++ blueprints/postgres-pgdog/postgres-pgdog.png | Bin 0 -> 23718 bytes blueprints/postgres-pgdog/template.toml | 36 +++++++++++++++++++ meta.json | 19 ++++++++++ 4 files changed, 88 insertions(+) create mode 100644 blueprints/postgres-pgdog/docker-compose.yml create mode 100644 blueprints/postgres-pgdog/postgres-pgdog.png create mode 100644 blueprints/postgres-pgdog/template.toml diff --git a/blueprints/postgres-pgdog/docker-compose.yml b/blueprints/postgres-pgdog/docker-compose.yml new file mode 100644 index 00000000..f5164d9c --- /dev/null +++ b/blueprints/postgres-pgdog/docker-compose.yml @@ -0,0 +1,33 @@ +services: + postgres-pgdog: + image: ${PGDOG_IMAGE} + restart: unless-stopped + # Uncomment 'ports' settings below to enable external access + # ports: + # - "6432:6432" + volumes: + - ../files/pgdog.toml:/pgdog/pgdog.toml + - ../files/users.toml:/pgdog/users.toml + environment: + - RUST_LOG=${RUST_LOG} + depends_on: + postgres: + condition: service_healthy + + postgres: + image: ${POSTGRES_IMAGE} + restart: unless-stopped + environment: + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${POSTGRES_DB} + volumes: + - postgres-data:/var/lib/postgresql + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 5 + +volumes: + postgres-data: diff --git a/blueprints/postgres-pgdog/postgres-pgdog.png b/blueprints/postgres-pgdog/postgres-pgdog.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc4aae7a9bbff146110a5d5389de5a114360d7c GIT binary patch literal 23718 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 K2ER&Qk?c?Dqu37s literal 0 HcmV?d00001 diff --git a/blueprints/postgres-pgdog/template.toml b/blueprints/postgres-pgdog/template.toml new file mode 100644 index 00000000..2ffc4ec0 --- /dev/null +++ b/blueprints/postgres-pgdog/template.toml @@ -0,0 +1,36 @@ +[variables] +postgres_user = "${username}" +postgres_password = "${password:32}" +postgres_db = "postgres" +pgdog_image = "ghcr.io/pgdogdev/pgdog:v0.1.26" +postgres_image = "postgres:18-alpine" + +[[config.mounts]] +filePath = "pgdog.toml" +content = """ +[general] +host = "0.0.0.0" +port = 6432 + +[[databases]] +name = "${postgres_db}" +host = "postgres" +port = 5432 +""" + +[[config.mounts]] +filePath = "users.toml" +content = """ +[[users]] +name = "${postgres_user}" +database = "${postgres_db}" +password = "${postgres_password}" +""" + +[config.env] +POSTGRES_USER = "${postgres_user}" +POSTGRES_PASSWORD = "${postgres_password}" +POSTGRES_DB = "${postgres_db}" +PGDOG_IMAGE = "${pgdog_image}" +POSTGRES_IMAGE = "${postgres_image}" +RUST_LOG = "info" diff --git a/meta.json b/meta.json index 16211e50..8e74fce0 100644 --- a/meta.json +++ b/meta.json @@ -5106,6 +5106,25 @@ "webmail" ] }, + { + "id": "postgres-pgdog", + "name": "PostgreSQL with PgDog", + "version": "0.1.26", + "description": "PostgreSQL database with PgDog connection pooler, load balancer, and horizontal scaling proxy. A modern alternative to PgBouncer with multi-threading support.", + "logo": "postgres-pgdog.png", + "links": { + "github": "https://github.com/pgdogdev/pgdog", + "website": "https://pgdog.dev", + "docs": "https://docs.pgdog.dev" + }, + "tags": [ + "database", + "postgresql", + "pooler", + "proxy", + "load-balancer" + ] + }, { "id": "postgresus", "name": "Postgresus",