d70ee83a63
Configure Docker Compose, Dockerfiles for API and web servers, and a startup script to enable local development and deployment of the application. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 77cfe984-2c65-4152-bb7a-0df28274fe66 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 9b39e228-74f1-466d-ab5c-87a1e5e7ed07 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c3c252e4-c83d-40ca-9fff-99a3ea60701e/77cfe984-2c65-4152-bb7a-0df28274fe66/kI0sxlu Replit-Helium-Checkpoint-Created: true
3.9 KiB
3.9 KiB
تشغيل Tx OS عبر Docker
دليل سريع لتشغيل المشروع بالكامل على جهازك (ماك / لينكس) بأمر واحد، بدون الحاجة لتثبيت Node أو Postgres يدوياً.
المتطلبات
- Docker Desktop (الإصدار 4.x أو أحدث) — حمّله من https://www.docker.com/products/docker-desktop/.
- يدعم Apple Silicon (M1/M2/M3/M4) و Intel.
- تأكد إنه شغّال بعد التثبيت (تشوف أيقونة الحوت بأعلى الشاشة).
- Git — موجود غالباً، تأكد بـ
git --version.
لا تحتاج تثبيت Node أو pnpm أو Postgres على الماك — كله يشتغل داخل الحاويات.
التشغيل لأول مرة
git clone https://desktop-11cj93j.tail866923.ts.net/rafraa/TX.git
cd TX
./start.sh
السكربت يعمل تلقائياً:
- ينشئ ملف
.envمن.env.docker.exampleويولّدSESSION_SECRETوPOSTGRES_PASSWORDعشوائيين. - يبني صور Docker (أول مرة يأخذ 5–10 دقائق — Node, Chromium, dependencies).
- يشغّل Postgres ثم يدفع جداول قاعدة البيانات (drizzle-kit push) ثم يزرع البيانات الأولية (seed).
- يشغّل API server والواجهة خلف Nginx.
بعدها افتح: http://localhost:3000
الأوامر اليومية
| الأمر | الوظيفة |
|---|---|
./start.sh |
تشغيل (build إذا لزم) |
./start.sh logs |
متابعة سجلّات الحاويات |
./start.sh stop |
إيقاف بدون حذف (البيانات تبقى) |
./start.sh down |
حذف الحاويات (البيانات تبقى في الـ volumes) |
./start.sh rebuild |
إعادة بناء الصور من الصفر |
./start.sh reset |
خطر: حذف قاعدة البيانات والملفات المرفوعة |
البنية
http://localhost:3000 → nginx (web container)
├── / → ملفات React الثابتة
└── /api/* → http://api:8080 (Node Express + Socket.IO)
└── postgres:5432
└── /app/storage (volume للملفات)
ثلاث حاويات + قاعدة بيانات:
- postgres — Postgres 16، البيانات في volume اسمه
tx-os_postgres_data. - migrate — يشتغل مرة وحدة عند كل تشغيل، يدفع schema ويزرع البيانات.
- api — Node 24 + Chromium (لتوليد PDF) + التخزين المحلي.
- web — Nginx يقدّم الواجهة ويعمل reverse proxy للـ API.
تخصيص
عدّل .env بعد ما يُنشأ. أهم القيم:
APP_PORT=3000— منفذ المتصفح (غيّره مثلاً إلى 8080 لو 3000 محجوز).SESSION_SECRET— سر توقيع الجلسات (مولّد تلقائياً، لا تشاركه).POSTGRES_PASSWORD— كلمة مرور قاعدة البيانات.STORAGE_DRIVER=local— التخزين على القرص داخل الحاوية (افتراضي ومناسب لمعظم الحالات).SMTP_*— إعدادات البريد لإشعارات اجتماعات الإدارة (اختياري).
بعد تعديل .env نفّذ ./start.sh stop ثم ./start.sh لإعادة التحميل.
استكشاف الأخطاء
- المنفذ 3000 محجوز: عدّل
APP_PORTفي.env. - الواجهة ما تفتح: راجع
./start.sh logs، خصوصاً سجلapiوmigrate. - بحاجة للوصول لقاعدة البيانات:
docker compose exec postgres psql -U tx tx. - مساحة القرص:
docker system pruneيحذف الصور غير المستخدمة (لا يلمس الـ volumes).
التحديث من Gitea
git pull
./start.sh rebuild