feat(infra): dockerized Postgres+pgvector and app image, mirroring novelpad compose conventions

docker-compose.yml: pgvector/pgvector:pg16 on host 54341 (side-by-side
with novelpad's 54321/54331), healthcheck-gated worker + review services
from one multi-stage Dockerfile (same image, different command — the
website/auth pattern). No Electric/Redis: nothing client-synced here.

Dockerfile adapted from novelpad-desktop @ 62c56b87, trimmed: no native
modules so no build-tools layer, no pm2. Default CMD = DBOS worker.

Verified end to end: migration applied against the container (vector
0.8.2, 6 tables, 2 HNSW indexes), containerized worker boots, DBOS
system schema lands in helmdocs_outreach ('dbos' schema — the
*_dbos_sys URL in DBOS's boot log is cosmetic; the shared pool wins).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Croissant Le Doux
2026-07-16 13:49:55 -04:00
parent 1735ff6754
commit fe12b032af
4 changed files with 144 additions and 1 deletions

View File

@@ -1,7 +1,8 @@
# Postgres connection string shared by the DBOS system schema, the pg Pool,
# and the Drizzle client over the outreach schema. Required — main.ts throws
# on boot if this is unset.
DATABASE_URL=postgres://postgres:postgres@localhost:5432/helmdocs_outreach
# For the dockerized DB (docker compose up -d postgres) use port 54341:
DATABASE_URL=postgresql://postgres:password@localhost:54341/helmdocs_outreach
# Path to a GCP service account key JSON used by ingestion/scoring steps that
# call Google-hosted APIs (e.g. @google/genai subscoring, Drive-backed org