TrustedHostMiddleware was blocking localhost healthchecks from Traefik,
causing 400 Bad Request errors. When behind a reverse proxy like
Traefik/Coolify, host validation is handled by the proxy itself.
- Use virtual environment instead of --user install
- Fix PATH to /opt/venv/bin (accessible by appuser)
- Fix CMD syntax with shell form
- Add curl for healthcheck
- Proper init_db.py execution before uvicorn