From 3932ef40484548ef8496ba6f92eba47e5c427ef8 Mon Sep 17 00:00:00 2001 From: Giorgio Gilestro Date: Fri, 22 May 2026 21:34:57 +0100 Subject: [PATCH] deploy: prod uses container-FQDN for DATABASE_URL / REDIS_URL The shared \`intranet\` Docker network has many other containers aliased as \`db\` and \`redis\` (mastodon-db, mailman redis, etc.). Docker's embedded DNS resolved those before our own services, sending the app's MySQL connection to the wrong IP and crashing it in a restart loop. Switched both DATABASE_URL and REDIS_URL in the prod overlay to use the project-prefixed container names (readmarkets-db-1, readmarkets-redis-1), which are globally unique on the Docker daemon. Applied to both app and scheduler. Co-Authored-By: Claude Opus 4.7 (1M context) --- docker-compose.prod.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 0623bab..1045c67 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -19,6 +19,24 @@ services: networks: - default - intranet + # The shared `intranet` network has many other containers aliased as + # `db` and `redis`; Docker's embedded DNS would pick one of those + # before ours. Use the project-prefixed container names instead — + # those are globally unique on the daemon. + environment: + DATABASE_URL: mysql+aiomysql://${MARIADB_USER:-cassandra}:${MARIADB_PASSWORD:-changeme}@readmarkets-db-1:3306/${MARIADB_DATABASE:-cassandra} + REDIS_URL: redis://readmarkets-redis-1:6379/0 + + scheduler: + # Scheduler isn't fronted by NPM, so it doesn't need intranet — but + # it does share the same DNS-collision problem on `default` (it only + # joins `default`, where our `db` alias would normally win… except + # the scheduler too is multi-network if you ever decide to expose + # its health endpoint via NPM). Future-proofing: use the explicit + # container names here too. + environment: + DATABASE_URL: mysql+aiomysql://${MARIADB_USER:-cassandra}:${MARIADB_PASSWORD:-changeme}@readmarkets-db-1:3306/${MARIADB_DATABASE:-cassandra} + REDIS_URL: redis://readmarkets-redis-1:6379/0 networks: intranet: