From b35017b832f08907cf024338a07fb2f7e1afb4c1 Mon Sep 17 00:00:00 2001 From: Hein Date: Fri, 18 Sep 2026 22:41:01 +0200 Subject: [PATCH] docs(docker): add docker-compose example using the prebuilt image Mirrors docker-compose.yml's postgres/migrate/broker stack but pulls git.warky.dev/wdevs/pgsql-broker:latest instead of building from source, so it needs no local Go toolchain or Dockerfile. Co-Authored-By: Claude Sonnet 5 --- README.md | 10 ++++++++ docker-compose.prebuilt.yml | 46 +++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 docker-compose.prebuilt.yml diff --git a/README.md b/README.md index c8f2a28..3c01b9b 100644 --- a/README.md +++ b/README.md @@ -275,6 +275,16 @@ docker run --rm -v $(pwd)/broker.yaml:/etc/pgsql-broker/broker.yaml:ro git.warky Config must be mounted at `/etc/pgsql-broker/broker.yaml` — no config is baked into the image. +### Prebuilt image: `docker-compose.prebuilt.yml` + +Same stack as `docker-compose.yml` below, but pulls `git.warky.dev/wdevs/pgsql-broker:latest` instead of building from source — no local Go toolchain or Dockerfile needed. + +```bash +cp broker.docker.example.yaml broker.docker.yaml # set broker_runtime password +cp .env.example .env # set POSTGRES_PASSWORD + 3 BROKER_*_PASSWORD +docker-compose -f docker-compose.prebuilt.yml up -d +``` + ### Building the image locally ```bash diff --git a/docker-compose.prebuilt.yml b/docker-compose.prebuilt.yml new file mode 100644 index 0000000..8dc5452 --- /dev/null +++ b/docker-compose.prebuilt.yml @@ -0,0 +1,46 @@ +services: + postgres: + image: docker.io/library/postgres:16-alpine + environment: + POSTGRES_DB: broker + POSTGRES_USER: postgres + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env} + volumes: + - postgres-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres -d broker"] + interval: 2s + timeout: 3s + retries: 30 + restart: unless-stopped + + # One-shot: applies migrations and creates/rotates the least-privilege + # broker_admin/broker_runtime/broker_enqueue roles, then exits. The + # broker service below only starts once this completes successfully. + migrate: + image: git.warky.dev/wdevs/pgsql-broker:latest + depends_on: + postgres: + condition: service_healthy + volumes: + - ./broker.docker.yaml:/etc/pgsql-broker/broker.yaml:ro + environment: + PGUSER: postgres + PGPASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env} + BROKER_ADMIN_PASSWORD: ${BROKER_ADMIN_PASSWORD:?set BROKER_ADMIN_PASSWORD in .env} + BROKER_RUNTIME_PASSWORD: ${BROKER_RUNTIME_PASSWORD:?set BROKER_RUNTIME_PASSWORD in .env} + BROKER_ENQUEUE_PASSWORD: ${BROKER_ENQUEUE_PASSWORD:?set BROKER_ENQUEUE_PASSWORD in .env} + command: ["install", "--with-roles"] + restart: "no" + + broker: + image: git.warky.dev/wdevs/pgsql-broker:latest + depends_on: + migrate: + condition: service_completed_successfully + volumes: + - ./broker.docker.yaml:/etc/pgsql-broker/broker.yaml:ro + restart: unless-stopped + +volumes: + postgres-data: