2026-05-29 12:29:44 +03:30
2026-05-29 12:29:44 +03:30
2026-05-29 12:29:44 +03:30
2026-05-29 12:29:44 +03:30
2026-05-29 12:29:44 +03:30
2026-05-29 12:29:44 +03:30
2026-05-29 12:29:44 +03:30
2026-05-29 12:29:44 +03:30
2026-05-29 12:29:44 +03:30

Hoshpoint

اجرای پروژه با Docker در Production

ابتدا Docker Desktop را اجرا کنید و فایل env پروداکشن را بسازید:

cp .env.production.example .env.production
php artisan key:generate --show

خروجی را کپی کنید و داخل .env.production بگذارید (خط APP_KEY نباید خالی بماند):

APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=

سپس APP_URL، HTTP_PORT، DB_PASSWORD، MARIADB_PASSWORD و MARIADB_ROOT_PASSWORD را هم تغییر دهید. مقدار پیش‌فرض HTTP_PORT=8080 است.

اگر قبلاً بدون APP_KEY کانتینرها را بالا آورده‌اید، بعد از پر کردن کلید این‌ها را اجرا کنید:

docker compose --env-file .env.production exec app php artisan config:clear
docker compose --env-file .env.production restart app queue scheduler

برای build کردن imageها:

docker compose --env-file .env.production build

حالت fallback با VLESS/Xray

کانفیگ VLESS داخل docker/xray/config.local.json قرار دارد و این فایل در git ignore شده است. فایل نمونه‌ی بدون اطلاعات اتصال هم در docker/xray/config.example.json موجود است. اگر این فایل local را نداشتید، از نمونه کپی بگیرید و مقدارهای اتصال را پر کنید.

برای وقتی که اینترنت مستقیم یا mirrorها درست جواب نمی‌دهند، اول پروکسی را با profile جدا بالا بیاورید:

docker compose --env-file .env.production --profile proxy up -d vless-proxy

پروکسی HTTP روی سیستم میزبان از 127.0.0.1:2080 و SOCKS از 127.0.0.1:2081 در دسترس است. برای build stepهای داخل Dockerfile از این دستور استفاده کنید:

DOCKER_BUILD_HTTP_PROXY=http://host.docker.internal:2080 \
DOCKER_BUILD_HTTPS_PROXY=http://host.docker.internal:2080 \
docker compose --env-file .env.production build

اگر خود pull کردن imageهای Docker مشکل داشت، این پروکسی را در Docker Desktop هم تنظیم کنید:

HTTP proxy:  http://127.0.0.1:2080
HTTPS proxy: http://127.0.0.1:2080

برای Debian apt، پیش‌فرض روی repository رسمی Debian می‌ماند چون mirror آروان ممکن است با نسخه‌ی base image sync نباشد و dependency conflict بدهد. اگر عمداً خواستید apt را هم به mirror دیگری ببرید، این متغیرها را هنگام build تنظیم کنید:

DEBIAN_APT_MIRROR=http://mirror.example/debian \
DEBIAN_SECURITY_APT_MIRROR=http://mirror.example/debian-security \
DEBIAN_APT_DISABLE_UPDATES=true \
docker compose --env-file .env.production build

برای اینکه درخواست‌های خروجی خود اپلیکیشن هم از پروکسی رد شوند:

APP_HTTP_PROXY=http://vless-proxy:8080 \
APP_HTTPS_PROXY=http://vless-proxy:8080 \
docker compose --env-file .env.production --profile proxy up -d

اول دیتابیس را بالا بیاورید:

docker compose --env-file .env.production up -d mariadb

بعد migrationها را اجرا کنید:

docker compose --env-file .env.production run --rm app php artisan migrate --force --seed

حالا همه سرویس‌ها را بالا بیاورید:

docker compose --env-file .env.production up -d

سایت از طریق پورت تنظیم‌شده در HTTP_PORT در دسترس است. مقدار پیش‌فرض:

http://localhost:8080

برای تغییر پورت، مقدار زیر را در .env.production عوض کنید و سرویس nginx را دوباره بالا بیاورید:

HTTP_PORT=8081
docker compose --env-file .env.production up -d --force-recreate nginx

برای دیدن وضعیت سرویس‌ها:

docker compose --env-file .env.production ps

برای دیدن لاگ‌ها:

docker compose --env-file .env.production logs -f

برای اجرای دستورهای Artisan داخل کانتینر:

docker compose --env-file .env.production exec app php artisan about

برای متوقف کردن سرویس‌ها:

docker compose --env-file .env.production down

برای حذف کامل دیتای دیتابیس و volumeها، فقط وقتی مطمئن هستید:

docker compose --env-file .env.production down -v

خطای No application encryption key has been specified

یعنی APP_KEY در .env.production خالی است یا بعد از تغییر env، cache قدیمی مانده.

  1. مقدار APP_KEY را در .env.production تنظیم کنید.
  2. cache را پاک و سرویس‌ها را restart کنید:
docker compose --env-file .env.production exec app php artisan config:clear
docker compose --env-file .env.production restart app queue scheduler
Description
No description provided
Readme 2.5 MiB
Languages
PHP 63.6%
Blade 34.7%
Dockerfile 1%
Shell 0.4%
JavaScript 0.2%
Other 0.1%