From c784b4b3782bcc17e611065ae38bddd38fb3ff5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hartmut=20N=C3=B6renberg?= Date: Thu, 9 Apr 2026 21:14:31 +0200 Subject: [PATCH] fix(infra): wait for postgres readiness before running migrations on container start Installs postgresql-client in the dev image so pg_isready is available. The startup script now polls until postgres accepts connections, preventing the P1001 "can't reach database" crash when the app container starts before postgres is fully ready. Co-Authored-By: Claude Sonnet 4.6 --- Dockerfile.dev | 2 +- tooling/docker/app-dev-start.sh | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index fd60996..36ec528 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,7 +1,7 @@ FROM node:20-bookworm-slim AS base # Prisma needs OpenSSL available during install/generate/runtime. -RUN apt-get update -y && apt-get install -y openssl && rm -rf /var/lib/apt/lists/* +RUN apt-get update -y && apt-get install -y openssl postgresql-client && rm -rf /var/lib/apt/lists/* # Install pnpm RUN npm install -g pnpm@9.14.2 diff --git a/tooling/docker/app-dev-start.sh b/tooling/docker/app-dev-start.sh index 40d134b..12419f3 100644 --- a/tooling/docker/app-dev-start.sh +++ b/tooling/docker/app-dev-start.sh @@ -1,6 +1,13 @@ #!/bin/sh set -eu +# Wait for postgres to be ready before running migrations +echo "Waiting for postgres..." +until pg_isready -h "${POSTGRES_HOST:-postgres}" -p "${POSTGRES_PORT:-5432}" -q; do + sleep 1 +done +echo "Postgres is ready." + # Regenerate Prisma client (needed after bind-mount overlays the image layer) pnpm --filter @capakraken/db db:generate