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).
79 lines
1.9 KiB
Bash
79 lines
1.9 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
echo "========================================="
|
|
echo "Building & Deploying to Solaria"
|
|
echo "========================================="
|
|
|
|
# Build locally first
|
|
echo ""
|
|
echo "Step 1: Building backend locally..."
|
|
cd backend
|
|
cargo build --release 2>&1 | tail -20
|
|
|
|
if [ ! -f target/release/normogen-backend ]; then
|
|
echo "❌ Build failed!"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Build successful"
|
|
|
|
# Stop existing backend on Solaria
|
|
echo ""
|
|
echo "Step 2: Stopping existing backend on Solaria..."
|
|
ssh alvaro@solaria "pkill -f normogen-backend || true"
|
|
|
|
# Copy the binary to Solaria
|
|
echo ""
|
|
echo "Step 3: Copying binary to Solaria..."
|
|
scp target/release/normogen-backend alvaro@solaria:~/normogen-backend
|
|
|
|
# Start MongoDB if needed
|
|
echo ""
|
|
echo "Step 4: Setting up MongoDB..."
|
|
ssh alvaro@solaria bash << 'ENDSSH'
|
|
if ! pgrep -x "mongod" > /dev/null; then
|
|
echo "Starting MongoDB..."
|
|
mkdir -p ~/mongodb_data
|
|
mongod --dbpath ~/mongodb_data --fork --logpath ~/mongodb.log
|
|
sleep 3
|
|
else
|
|
echo "✅ MongoDB already running"
|
|
fi
|
|
ENDSSH
|
|
|
|
# Start the backend
|
|
echo ""
|
|
echo "Step 5: Starting backend on Solaria..."
|
|
ssh alvaro@solaria bash << 'ENDSSH'
|
|
export MONGODB_URI="mongodb://localhost:27017"
|
|
export MONGODB_DATABASE="normogen"
|
|
export JWT_SECRET="production-secret-key"
|
|
export NORMOGEN_HOST="0.0.0.0"
|
|
export NORMOGEN_PORT="6500"
|
|
export RUST_LOG="normogen_backend=debug,tower_http=debug,axum=debug"
|
|
|
|
nohup ~/normogen-backend > ~/normogen-backend.log 2>&1 &
|
|
sleep 5
|
|
|
|
if pgrep -f "normogen-backend" > /dev/null; then
|
|
echo "✅ Backend started (PID: $(pgrep -f 'normogen-backend'))"
|
|
else
|
|
echo "❌ Backend failed to start"
|
|
tail -50 ~/normogen-backend.log
|
|
exit 1
|
|
fi
|
|
|
|
# Health check
|
|
echo ""
|
|
echo "Testing health endpoint..."
|
|
sleep 2
|
|
curl -s http://localhost:6500/health
|
|
echo ""
|
|
|
|
ENDSSH
|
|
|
|
echo ""
|
|
echo "========================================="
|
|
echo "✅ Deployment complete!"
|
|
echo "========================================="
|