nginx:alpine is a minimal image that does not include wget.
Install curl explicitly and use curl -f for the healthcheck.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
tsconfig.json, tsconfig.app.json, and tsconfig.node.json were never
committed because *.json was gitignored without exceptions for them.
Added whitelist entries and restored Dockerfile to use npm run build
(tsc -b + vite) now that the config files are present.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
--spider sends a HEAD request which newer BusyBox builds in nginx:alpine
may not handle consistently. A plain GET to /dev/null is more reliable.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
tsc -b with project references fails in the Alpine Docker environment
(TypeScript 5.9 + no composite:true on referenced configs). Vite uses
esbuild for TS compilation anyway, so tsc -b only served as a type-check
which is redundant in a production build.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Single-container supervisord approach added unnecessary complexity.
Two containers is simpler and more standard:
- Dockerfile.backend: python:3.11-slim, uvicorn on port 8000
- Dockerfile.frontend: node build → nginx:alpine on port 80
- nginx.conf: proxy_pass restored to http://backend:8000
- docker-compose.yml: two services with depends_on
- Removed combined Dockerfile and supervisord.conf
Each container does one thing; logs are separate; either can be
restarted independently.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace two-container setup (separate backend + nginx frontend) with a
single image that runs both via supervisord:
- New Dockerfile: Node stage builds React, Python+nginx stage is the runtime
- supervisord.conf: manages uvicorn (api_server.py) + nginx as sibling procs
- nginx.conf: proxy_pass updated to localhost:8000 (same container)
- docker-compose.yml: simplified to one service on port 80
Deploy:
docker-compose up -d # or
docker build -t flight-radar . && docker run -p 80:80 flight-radar
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>