### Hoshpoint ## اجرای پروژه با Docker در Production ابتدا Docker Desktop را اجرا کنید و فایل env پروداکشن را بسازید: ```bash cp .env.production.example .env.production php artisan key:generate --show ``` خروجی را کپی کنید و داخل `.env.production` بگذارید (خط `APP_KEY` نباید خالی بماند): ```env APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= ``` سپس `APP_URL`، `HTTP_PORT`، `DB_PASSWORD`، `MARIADB_PASSWORD` و `MARIADB_ROOT_PASSWORD` را هم تغییر دهید. مقدار پیش‌فرض `HTTP_PORT=8080` است. اگر قبلاً بدون `APP_KEY` کانتینرها را بالا آورده‌اید، بعد از پر کردن کلید این‌ها را اجرا کنید: ```bash docker compose --env-file .env.production exec app php artisan config:clear docker compose --env-file .env.production restart app queue scheduler ``` برای build کردن imageها: ```bash docker compose --env-file .env.production build ``` اول دیتابیس را بالا بیاورید: ```bash docker compose --env-file .env.production up -d mariadb ``` بعد migrationها را اجرا کنید: ```bash docker compose --env-file .env.production run --rm app php artisan migrate --force --seed ``` حالا همه سرویس‌ها را بالا بیاورید: ```bash docker compose --env-file .env.production up -d ``` سایت از طریق پورت تنظیم‌شده در `HTTP_PORT` در دسترس است. مقدار پیش‌فرض: ```text http://localhost:8080 ``` برای تغییر پورت، مقدار زیر را در `.env.production` عوض کنید و سرویس `nginx` را دوباره بالا بیاورید: ```env HTTP_PORT=8081 ``` ```bash docker compose --env-file .env.production up -d --force-recreate nginx ``` برای دیدن وضعیت سرویس‌ها: ```bash docker compose --env-file .env.production ps ``` برای دیدن لاگ‌ها: ```bash docker compose --env-file .env.production logs -f ``` برای اجرای دستورهای Artisan داخل کانتینر: ```bash docker compose --env-file .env.production exec app php artisan about ``` برای متوقف کردن سرویس‌ها: ```bash docker compose --env-file .env.production down ``` برای حذف کامل دیتای دیتابیس و volumeها، فقط وقتی مطمئن هستید: ```bash 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 کنید: ```bash docker compose --env-file .env.production exec app php artisan config:clear docker compose --env-file .env.production restart app queue scheduler ```