الملفات
ghaymah-exam-Moataz-Gamal-H…/q1-deploy-monitor/README.md
2026-07-28 12:27:03 +00:00

3.0 KiB

Ghyma Deploy — Static Site with Health Monitoring

A "Coming Soon" static site, containerized with nginx, deployed on ghaymah.systems, with a built-in health check, request metrics, and a live monitoring dashboard.

Project Structure

comingsoon-deploy/
├── Dockerfile           # Builds the nginx image
├── nginx.conf            # Adds /health and /nginx_status routes + CORS
├── monitor.py             # CLI script: polls /health every 30s, logs results
├── comingsoon/            # The static site itself (HTML/CSS/JS)
└── dashboard/
    └── index.html          # Live monitoring dashboard (served at /dashboard)

What Gets Deployed

The Docker image bundles three things served by a single nginx instance:

Path What it is
/ The static "Coming Soon" site
/dashboard Live monitoring UI (status, response time, request count)
/health Plain-text health check, returns ok
/nginx_status nginx stub_status output, used for request count

monitor.py is not bundled in the image — it's a standalone script meant to run on your machine (or any external host) against the deployed URL.

Build & Run Locally

cd comingsoon-deploy
docker build -t motazelalfy/ghyma:latest .
docker run -d -p 8080:80 --name comingsoon motazelalfy/ghyma:latest

Check it's working:

curl http://localhost:8080/health
curl http://localhost:8080/nginx_status

Open in browser:

Push to Docker Hub

docker login
docker push motazelalfy/ghyma:latest

Deploy on ghaymah.systems

  1. Log in at https://deploy.ghaymah.systems
  2. Create a new app/service → Deploy from image
  3. Image: motazelalfy/ghyma:latest
  4. Port: 80
  5. Health check path (if available): /health
  6. Deploy and wait for the public URL

Monitor the Deployed App

Option A — open the dashboard on the live URL:

https://your-app.ghaymah.systems/dashboard

Option B — run the CLI monitor from your machine:

python monitor.py --url https://your-app.ghaymah.systems

Runs a check every 30 seconds by default, writes monitor.log and monitor_history.json, and alerts after 3 consecutive failures.

Useful flags:

python monitor.py --url <URL> --interval 30 --health-path /health --once

Notes / Known Limitations

  • The site's PHP contact form (comingsoon/php/contact.php) does not work as-is — this image serves static files only, no PHP runtime. Adding php-fpm to the Dockerfile would be needed to enable it.
  • /nginx_status is open to any origin (CORS enabled) so the dashboard can read it — fine for this monitoring use case, but worth restricting if the app ever needs tighter access control.