دلدل (dating-app)
پوشهی مادر پروژه؛ همهی بخشها بهصورت ریپوی گیت جدا زیر همین پوشهان:
dating-app/
├── backend/ بکاند Go (ریپوی گیت جدا)
├── admin/ پنل ادمین Next.js (ریپوی گیت جدا)
├── web/ وباپ Next.js (ریپوی گیت جدا)
├── twa/ پروژهی اندروید TWA (بدون گیت)
├── docker-compose.yml
└── .env.example
اجرا روی سرور
cp .env.example .env # مقادیر رو با دامنه/رمزهای واقعی پر کن
docker compose up -d --build
این کار ۴ کانتینر بالا میآره: postgres, backend, web, admin.
کامپوز هیچ وبسروری بالا نمیآره؛ ریورسپروکسی و سابدامینها با nginx خودت روی هاست ست میشن. چون کانتینر nginx روی همون شبکهی داکری این کامپوز نشسته، میتونه مستقیم با نام کانتینر بهشون proxy_pass بده (بهجای پورت هاست):
| دامنه | proxy_pass به |
|---|---|
brainito.ir |
http://dating-app-backend-1:8080 |
app.brainito.ir |
http://dating-app-web-1:3000 |
panel.brainito.ir |
http://dating-app-admin-1:3000 |
(نام کانتینرها بر اساس name: dating-app توی کامپوز و پیشوند سرویس ساخته میشن؛ اگه پروژه رو با نام دیگهای بالا بیاری این نامها عوض میشن.)
هیچ سرویسی پورتی روی هاست منتشر نمیکنه؛ فقط روی شبکهی داکلی کامپوز با نام کانتینر در دسترسن (nginx باید به همون شبکه متصل باشه). سکرتهای اختصاصی بکاند (JWT، DB و...) توی backend/.env میمونن و از اونجا با env_file به سرویس backend پاس داده میشن؛ .env ریشه فقط برای اطلاعات پستگرس و آدرس عمومی API استفاده میشه.