### 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` است.

برای 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
```

Swagger:

```text
http://localhost:8080/api/documentation
```

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

```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` خالی است.

1. مقدار `APP_KEY` را در `.env.production` تنظیم کنید.
2. سرویس‌ها را restart کنید:

```bash
docker compose --env-file .env.production restart app queue scheduler
```

