Files
tripz-llc/docker
2026-08-09 16:56:13 +03:00
..
2026-08-09 16:56:13 +03:00
2026-08-09 16:56:13 +03:00
2026-08-09 16:56:13 +03:00
2026-08-09 16:56:13 +03:00
2026-08-09 16:56:13 +03:00
2026-08-09 16:56:13 +03:00
2026-08-09 16:56:13 +03:00
2026-08-09 16:56:13 +03:00

تربز في حاويات — دليل التشغيل والفحص

الهدف: نسخة تربز كاملة على سيرفر واحد داخل 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/.