From f621e49770e3d915ac45f24a13c86354326f2491 Mon Sep 17 00:00:00 2001 From: Grant Whitmer Date: Tue, 11 Aug 2026 15:47:14 -0400 Subject: [PATCH] G0.4: add psycopg2-binary so migrations run inside the image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Alembic runs synchronously, so the container needs a sync driver. Without it migrations fail on a fresh deploy while passing on any developer machine that happens to have psycopg2 — exactly the class of gap that only appears in production. Co-Authored-By: Claude Opus 5 --- pyproject.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 0f39f08..f4d9a71 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,11 @@ dependencies = [ "pydantic-settings>=2.6", "sqlalchemy[asyncio]>=2.0", "asyncpg>=0.30", + # Alembic runs synchronously (env.py strips +asyncpg), so the image needs a + # sync driver too. Without it migrations fail INSIDE the container while + # passing on a developer machine that happens to have it — the kind of gap + # that only shows up on a fresh deploy. + "psycopg2-binary>=2.9", "alembic>=1.14", "httpx>=0.27", "boto3>=1.35",