تربز في حاويات — دليل التشغيل والفحص
الهدف: نسخة تربز كاملة على سيرفر واحد داخل compose واحدة، والتطبيق لا يتغير فيه شيء سوى الـ base URLs (تُبنى مرة واحدة بـ
.envالجديد).البورتات مخصصة لتربز ولا تتصادم مع نسخ سيرو/intaleq على السيرفر نفسه: HTTP 8183 · driver 12022 · passenger 13033 · food 14042 · mysql 33063 · pma 8084 · TURN 3479
0) قبل أي شيء — على السيرفر
df -h / # التأكد من المساحة — الصور والقواعد تحتاج ~4-6GB
docker image prune -f # نظّف أولاً، وإن لم تكفِ المساحة فالفحص على صندوق آخر
ss -tlnp | grep -E ':(1202|1303|1404|3306|3478|808)[0-9]' # تأكد الفارغة
1) الإعداد (مرة واحدة)
cd /path/to/Tripz/docker
cp .env.example .env && nano .env # املأ الأسرار — خاصة JWT_SECRET وكلمات MySQL
# ⚠️ طابق أسماء القواعد في mysql/init/ مع ما يتوقعه الكود
# ⚠️ توجد قاعدة طعام منفصلة tripz_food (06-foodDB.sql) — اضبط DB_FOOD_PASS
docker compose build
# تبعيات composer للخدمات التي لا تحمل vendor/ داخلها:
docker compose run --rm socket_driver composer install
docker compose run --rm socket_passenger composer install
docker compose run --rm --workdir /var/www/backend php composer install
2) التشغيل والاستيراد
docker compose up -d
# استيراد السكيمات (أول مرة فقط):
docker compose exec -T mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" mainDB < ../backend/schema_primary.sql
docker compose exec -T mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" ridesDB < ../backend/schema_ride.sql
docker compose exec -T mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" locationDB < ../backend/schema_tracking.sql
docker compose exec -T mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" paymentDB < ../payment_server/WalletDB.sql
docker compose exec -T mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" locationDB < ../loction_server/locationDB.sql
3) التحقق
docker compose ps # كل الخدمات up
curl -s http://localhost:8183/backend/index.html # nginx→ملفات
curl -s -o /dev/null -w '%{http_code}\n' http://localhost:8183/backend/connect.php # يرد (401/400 طبيعي بلا JWT)
curl -s http://localhost:8183/fpm-status # حالة حوض fpm
docker compose logs socket_driver | tail # Workerman أقلع على 2020/2021
docker compose logs socket_food | tail # سوكيت الطعام على 4040
اتصال التطبيق للتجربة: https://api.tripz-egypt.com/backend + سوكيتات
https://api.tripz-egypt.com:2020 / :3030 / :4040 (منفذة TLS عبر
/etc/nginx/sites-enabled/tripz-sockets-tls.conf على المضيف).
4) الخدمات المنفصلة (transit / food / TURN)
- php_transit — حوض fpm معزول (16 عاملاً) يخدم
/backend/transit/*فقط. - php_food — حوض fpm معزول (24 عاملاً) يخدم
/backend/food/*فقط، وقاعدةtripz_foodمنفصلة. - socket_food — سوكيت الطعام على 127.0.0.1:14042 (يفسد من المضيف على 4040).
- coturn — مكالمات الصوت على TCP/UDP 3479 + نطاق 49301–49400 UDP (افتحهما على جدار الحماية؛ النطاق 49160–49300 محجوز لنسخة سيرو).
5) أدوات الإدارة
- phpMyAdmin:
ssh -L 8084:127.0.0.1:8084 user@serverثمhttp://127.0.0.1:8084 - MySQL من السيرفر:
mysql -h127.0.0.1 -P33063 -uroot -p - المهام المجدولة: انسخ
crontab.production(ضمنف داخل حاوية php).
6) ملاحظات أداء محسوسة
- الحاوية على لينكس = عمليات عادية بنفس النواة — لا محاكاة، حمل CPU/ذاكرة ≈ صفر.
- المكان الوحيد الذي يُخسر فيه أداء فعلاً: كتابة MySQL فوق overlayfs — محلول بـ volume.
- أداء PHP الحقيقي = opcache + مقاس حوض fpm + فهارس MySQL — مضبوطة في
php/.