Resolve the operational/config sprawl (#10-#14 from the review): the app read NORMOGEN_*/MONGODB_* env vars but every env/compose file set SERVER_*/DATABASE_*, the ports were all over the place (8080/8000/6500/6800), there were 5 inconsistent Dockerfiles (rust:1.82 vs rust:1.93, missing curl), and an 18 MB binary was committed. Env-var names — standardize on what the code reads: * config/mod.rs: NORMOGEN_PORT default 8080 -> 6500 (avoid the over-common 8000/8080). * db/mod.rs: create_database() now reads MONGODB_DATABASE (was DATABASE_NAME). * .env.example, defaults.env, docker-compose.yml, docker-compose.dev.yml, DEPLOYMENT_GUIDE.md, deployment/README.md, deploy-and-test-solaria.sh, deploy-local-build.sh: use NORMOGEN_HOST/NORMOGEN_PORT/MONGODB_URI/ MONGODB_DATABASE/APP_ENVIRONMENT; drop the dead SERVER_*/DATABASE_URI/ DATABASE_NAME names. Ports — canonical container port 6500 everywhere: * Both Dockerfiles EXPOSE 6500; prod compose maps 6500:6500, dev 6501:6500. * Bulk-replaced the long tail of solaria:8000/localhost:8000/localhost:8080 in docs and test scripts -> 6500. Dockerfiles — 2 canonical, rust:latest, curl + healthcheck: * backend/Dockerfile (prod): rust:latest builder, debian runtime now installs curl (so the compose HEALTHCHECK actually works), EXPOSE 6500. * backend/docker/Dockerfile.dev (dev): rust:latest both stages, EXPOSE 6500. * Deleted 3 redundant Dockerfiles (Dockerfile.improved x2, docker/Dockerfile). * Deleted the committed 18 MB binary backend/docker/normogen-backend. * Deleted 2 stray fix-notes in backend/docker/. Compose: * docker-compose.yml: correct env names, 6500:6500, APP_ENVIRONMENT=production, JWT_SECRET/ENCRYPTION_KEY required via compose interpolation, dropped the obsolete top-level version: key. * docker-compose.dev.yml: correct env names, 6501:6500, mongo:7 (was 6.0), added a working backend healthcheck. * Deleted docker/docker-compose.improved.yml + backend/deploy-to-solaria-improved.sh (built around the now-deleted 'improved' Docker files). Verified: cargo fmt --check clean, build + clippy --all-targets clean, 18 unit tests pass; grep confirms no SERVER_*/DATABASE_* env names and no rust:1.x tags remain outside docs/archive and docs/adr (historical).
38 lines
1.1 KiB
Bash
Executable file
38 lines
1.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
echo "=========================================="
|
|
echo "Backend Diagnostic Script for 10.0.10.30"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
echo "1. Checking Docker containers..."
|
|
docker ps --filter "name=normogen" --format "table {{.Names}} {{.Status}} {{.Ports}}"
|
|
echo ""
|
|
|
|
echo "2. Checking if port 6500 is listening..."
|
|
sudo ss -tlnp | grep 6500 || echo "Port 6500 NOT listening"
|
|
echo ""
|
|
|
|
echo "3. Checking firewall status..."
|
|
sudo ufw status || echo "UFW not installed"
|
|
echo ""
|
|
|
|
echo "4. Checking Docker network..."
|
|
docker network ls | grep normogen
|
|
echo ""
|
|
|
|
echo "5. Backend container logs (last 20 lines)..."
|
|
docker logs --tail 20 normogen-backend-dev 2>&1
|
|
echo ""
|
|
|
|
echo "6. Testing local connection..."
|
|
curl -s --max-time 3 http://localhost:6500/health || echo "Local connection failed"
|
|
echo ""
|
|
|
|
echo "7. Testing container connection..."
|
|
docker exec normogen-backend-dev curl -s --max-time 3 http://localhost:6500/health || echo "Container connection failed"
|
|
echo ""
|
|
|
|
echo "=========================================="
|
|
echo "Diagnostic complete"
|
|
echo "=========================================="
|