This commit is contained in:
sbb45
2026-06-02 22:18:38 +05:00
parent b81ab27553
commit 7b655ff3de
11 changed files with 212 additions and 129 deletions
+67 -23
View File
@@ -1,14 +1,14 @@
# AirService
Система управления заявками на техническое обслуживание (Service Desk). Сотрудники создают заявки, назначают приоритеты и отслеживают статус выполнения.
Система управления заявками на техническое обслуживание (Service Desk).
**Стек:** Laravel 10, Livewire, Tailwind CSS, MySQL, Vite
**Стек:** Laravel 10, Livewire, Tailwind CSS, SQLite, Vite
---
## Локальная разработка
**Требования:** PHP >= 8.2, Composer, Node.js >= 18, MySQL
**Требования:** PHP >= 8.2, Composer, Node.js >= 18
```bash
git clone <repo-url>
@@ -18,9 +18,10 @@ composer install
npm install
cp .env.example .env
# Поменять APP_ENV=local, APP_DEBUG=true, APP_URL=http://localhost
# Поменять DB_HOST=127.0.0.1, DB_USERNAME=root, убрать DB_ROOT_PASSWORD
# Поменять APP_ENV=local, APP_DEBUG=true, APP_URL=http://localhost:8000
php artisan key:generate
touch database/sqlite/database.sqlite
php artisan migrate --seed
```
@@ -34,13 +35,22 @@ php artisan serve
npm run dev
```
Приложение: [http://127.0.0.1:8000](http://127.0.0.1:8000)
Приложение: http://127.0.0.1:8000
**Тестовые аккаунты** (пароль у всех: `password`):
| Email | Роль |
|---|---|
| admin@service.local | Администратор |
| manager@service.local | Менеджер |
| tech1@service.local | Техник |
| client1@service.local | Клиент |
---
## Деплой на сервер (flamy / docker-runtime)
## Деплой на сервер (Docker)
**Требования:** Docker, Docker Compose на `docker-runtime` (`10.20.0.20`).
**Требования:** Docker, Docker Compose на сервере `10.20.0.20`.
### 1. Скопировать проект на сервер
@@ -49,7 +59,7 @@ ssh -i /root/.ssh/docker_vm_ed25519 crimson@10.20.0.20
sudo mkdir -p /opt/docker-apps/airservice
```
Скопировать файлы (с локальной машины):
С локальной машины:
```bash
rsync -avz --exclude='.git' --exclude='node_modules' --exclude='vendor' \
@@ -67,27 +77,62 @@ nano .env
Обязательно заполнить:
```env
APP_KEY= # php artisan key:generate --show
APP_KEY= # сгенерировать ниже
APP_URL=https://your-domain.ru
DB_PASSWORD= # придумать
DB_ROOT_PASSWORD= # придумать
```
### 3. Запустить
Сгенерировать ключ:
```bash
docker compose run --rm app php artisan key:generate --show
# Скопировать результат в APP_KEY= в .env
```
### 3. Собрать и запустить
```bash
docker compose up -d --build
docker compose ps
docker compose logs -f --tail=100
```
Проверить локально на сервере:
### 4. Наполнить базу начальными данными (один раз)
```bash
docker compose exec app php artisan db:seed
```
После этого доступны тестовые аккаунты из таблицы выше.
### 5. Проверить
```bash
docker compose ps
docker compose logs app --tail=50
curl -I http://10.20.0.20:18201
```
### 4. Открыть домен через Caddy (edge-proxy)
### Пересборка после обновления кода
```bash
rsync -avz --exclude='.git' --exclude='node_modules' --exclude='vendor' \
./ crimson@10.20.0.20:/opt/docker-apps/airservice/
docker compose up -d --build
```
Миграции накатываются автоматически при старте контейнера. База данных (SQLite файл) хранится в Docker volume `airservice_sqlite_data` и не теряется при пересборке.
### Если нужно сбросить базу и накатить заново
```bash
docker compose down
docker volume rm airservice_sqlite_data
docker compose up -d --build
docker compose exec app php artisan db:seed
```
---
### Открыть домен через Caddy (edge-proxy)
```bash
ssh -i /root/.ssh/edge_vm_ed25519 crimson@192.168.0.80
@@ -120,9 +165,8 @@ sudo systemctl reload caddy
## Структура Docker-сервисов
| Сервис | Описание |
|--------------------|-----------------------------------|
| `airservice_app` | PHP-FPM (Laravel) |
| `airservice_nginx` | nginx, публикует порт `18201` |
| `airservice_mysql` | MySQL 8.0, только внутри сети |
| `airservice_queue` | Queue worker (`queue:work`) |
| Сервис | Описание |
|---|---|
| `airservice_app` | PHP-FPM (Laravel) |
| `airservice_nginx` | nginx, порт `18201` |
| `airservice_queue` | Queue worker |