fix(infra): pass pgweb credentials via discrete CLI flags #63
Reference in New Issue
Block a user
Delete Branch "fix/infra/pgweb-cli-flags"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
PGWEB_DATABASE_URL(post-#62 rename) still fails at boot:Root cause: the userinfo portion of a Postgres URL must be URL-encoded — any
@,#,:,/,?,%,&,=,+,;etc. in the password breaks the parser. Compose has no built-in URL encoding, so the URL we construct in YAML is fragile by design and depends on the developer happening to pick a URL-safe password.Switch to pgweb's discrete CLI flags (
--host,--port,--user,--pass,--db,--ssl). Compose interpolates each value literally — no URL encoding required, any password works.The image's ENTRYPOINT already passes
--bind=0.0.0.0 --listen=8081; our args are appended to those.Side benefit
A missing password now yields an explicit Compose error (
POSTGRES_PASSWORD must be set in infra/local/.env) rather than an opaque pgweb crash with a vague "Invalid URL" message.Test plan
docker compose -f infra/local/dev.compose.yml --profile dbtools up -d→ pgweb stays up (noRestarting (1)loop).auditschema.dev@pass#2026!) — should still work.`PGWEB_DATABASE_URL` (post-#62 rename) still failed at boot with: Error: Invalid URL. Valid format: postgres://user:password@host:port/db?sslmode=mode The userinfo portion of a Postgres URL must be URL-encoded — any `@`, `#`, `:`, `/`, `?`, `%`, `&`, `=`, `+`, `;` etc. in the password breaks the parser. Compose has no built-in URL encoding, so the URL we construct in YAML is fragile by design. Switch to pgweb's discrete CLI flags (`--host`, `--port`, `--user`, `--pass`, `--db`, `--ssl`). Compose interpolates each value literally — no URL encoding required, any password works. The image's ENTRYPOINT already passes `--bind=0.0.0.0 --listen=8081`; our args are appended to those. Side benefit: the failure mode for a missing password is now an explicit Compose error (`POSTGRES_PASSWORD must be set in infra/local/.env`) rather than an opaque pgweb crash.