פריסת Docker
Docker Compose היא הדרך המומלצת להריץ את RedCloud על מארח יחיד.
מה Compose מריץ
Section titled “מה Compose מריץ”ה-docker-compose.yml בשורש מגדיר ארבעה שירותים:
| שירות | תמונה / בנייה | פורט מפורסם |
|---|---|---|
postgres | postgres:16-alpine | ${DB_PORT:-5432} |
redcloud | בונה Dockerfile (backend + frontend) | ${PORT:-9900} |
license-server | בונה Dockerfile.license | ${LICENSE_PORT:-7700} |
scheduler | בונה scheduler/Dockerfile | אין |
לכל שירות יש בדיקת בריאות (pg_isready, curl /health, curl /, ובדיקת תהליך ל-scheduler). נתונים קבועים משתמשים ב-volume בשם pgdata, פלט הסריקה ממופה מ-./out, ואישורי ענן ממופים בקריאה-בלבד מ-./credentials.
# 1. הגדרת סביבהcp .env.example .env# ערכו את .env — הגדירו HMAC_KEY, API_KEY, ENCRYPTION_KEY, DB_PASSWORD, רישיון וכו'.
# 2. אספקת אישורי ענןmkdir -p credentials# הניחו את מפתח ה-Service Account של GCP ב-credentials/sa-key.json
# 3. הפעלהdocker compose up -ddocker compose logs -f
# עצירה (שמירת נתונים):docker compose down# עצירה ומחיקת volume בסיס הנתונים:docker compose down -vפתחו http://<host>:9900 כשבדיקת הבריאות של redcloud עוברת.
תמונות
Section titled “תמונות”Dockerfile— רב-שלבי: שלבnode:20-alpineבונה את ה-frontend, שלבpython:3.12-slimמתקין את gcloud CLI ותלויות Python, מעתיק את ה-frontend הבנוי לתיקיית ה-static של ה-backend, רץ כמשתמשredcloudשאינו root, חושף9900, ומפעילuvicorn api.app:appעם שני workers. פקודת ההפעלה מכבדת$PORTדינמי (כך שהיא רצה ב-Cloud Run ללא שינוי).Dockerfile.production— וריאנט מוקשח שמהדר את Python ל-bytecode ושולח.pycבלבד (ללא מקור). התנהגות הריצה זהה.Dockerfile.license— שרת הרישוי העצמאי על7700.
בריאות, מטריקות ותפעול
Section titled “בריאות, מטריקות ותפעול”| נקודת קצה | מטרה |
|---|---|
GET /health | Liveness (בשימוש בבדיקת הבריאות של הקונטיינר) |
GET /health?deep=true | אבחון בסיס נתונים, דיסק, gcloud ועמדת אבטחה |
GET /metrics | מטריקות Prometheus |
GET /api/versions | מידע גרסת API |
גבו את PostgreSQL בתזמון (ה-runbook מציע cron לילי של backup.sh) ושחזרו עם סקריפט השחזור המצורף.