fix(infra): pass pgweb credentials via discrete CLI flags #63

Merged
julien merged 1 commits from fix/infra/pgweb-cli-flags into main 2026-05-08 23:13:18 +02:00

1 Commits

Author SHA1 Message Date
Julien Gautier 1ab8bfb212 fix(infra): pass pgweb credentials via discrete CLI flags
CI / commits (pull_request) Successful in 1m11s
CI / check (pull_request) Successful in 1m20s
CI / scan (pull_request) Successful in 1m23s
CI / a11y (pull_request) Successful in 1m29s
CI / perf (pull_request) Successful in 3m15s
`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.
2026-05-08 23:11:46 +02:00