fix: nginx dns re-resolve, db healthcheck, explicit bind

This commit is contained in:
mahmood
2026-09-10 14:51:57 +03:30
parent 7d93507089
commit 1b675804ea
5 changed files with 25 additions and 5 deletions
+7 -1
View File
@@ -5,8 +5,14 @@ server {
root /usr/share/nginx/html;
index index.html;
# Docker's embedded DNS. Without re-resolving at request time, nginx caches the
# api container's IP from startup and keeps returning 502 ("no live upstreams")
# after the api container restarts with a new IP.
resolver 127.0.0.11 valid=10s ipv6=off;
location /api/ {
proxy_pass http://api:3000;
set $api_upstream http://api:3000;
proxy_pass $api_upstream$request_uri;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
+1 -1
View File
@@ -77633,7 +77633,7 @@ async function bootstrap() {
app.useGlobalPipes(new common_1.ValidationPipe({ whitelist: true, transform: true }));
app.useGlobalFilters(new prisma_exception_filter_1.PrismaExceptionFilter());
app.enableCors();
await app.listen(process.env.PORT ?? 3e3);
await app.listen(process.env.PORT ?? 3e3, "0.0.0.0");
}
bootstrap();
/*! Bundled license information:
+2 -1
View File
@@ -10,6 +10,7 @@ async function bootstrap() {
app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true }));
app.useGlobalFilters(new PrismaExceptionFilter());
app.enableCors();
await app.listen(process.env.PORT ?? 3000);
// Bind all interfaces explicitly so the container is reachable from nginx.
await app.listen(process.env.PORT ?? 3000, '0.0.0.0');
}
bootstrap();
+7 -1
View File
@@ -5,8 +5,14 @@ server {
root /usr/share/nginx/html;
index index.html;
# Docker's embedded DNS. Without re-resolving at request time, nginx caches the
# api container's IP from startup and keeps returning 502 ("no live upstreams")
# after the api container restarts with a new IP.
resolver 127.0.0.11 valid=10s ipv6=off;
location /api/ {
proxy_pass http://api:3000;
set $api_upstream http://api:3000;
proxy_pass $api_upstream$request_uri;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
+8 -1
View File
@@ -13,14 +13,21 @@ services:
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-goldbank}"]
interval: 5s
timeout: 5s
retries: 12
api:
build:
context: ./apps/api
dockerfile: Dockerfile
container_name: goldbank_api
# Prisma connects on module init, so a not-yet-ready DB crash-loops the API.
depends_on:
- db
db:
condition: service_healthy
environment:
- DATABASE_URL=${DATABASE_URL:-postgresql://postgres:postgres@db:5432/goldbank?schema=public}
- PORT=${PORT:-3000}