- Реструктуризация: src/ разбит на middleware/, utils/, repositories/ (удалены), routes/ (удалены) - Добавлен src/original-html.ts — полный HTML с reportModal - Добавлен src/index.tsx.backup — React-компонент с reportModal - Миграции переименованы (0001_initial_schema.sql) - Добавлена миграция 0018 (удалена позже) - Docker: multi-stage build, wrangler.toml - Frontend: public/static/app.js + style.css - seed.sql добавлен - Документация: CHANGELOG, CHANGES_v4.1.0-4.1.9, PROJECT_STRUCTURE
185 lines
3.5 KiB
Markdown
185 lines
3.5 KiB
Markdown
# 🚀 Docker Quick Start - AKNAPROFF Tootmine
|
||
|
||
## Быстрый запуск в 3 команды
|
||
|
||
### Development режим:
|
||
|
||
```bash
|
||
# 1. Перейти в папку проекта
|
||
cd /path/to/webapp
|
||
|
||
# 2. Запустить Docker Compose
|
||
docker-compose up
|
||
|
||
# 3. Открыть браузер
|
||
http://localhost:3000
|
||
```
|
||
|
||
✅ **БД будет храниться в `.wrangler/state/v3/d1/webapp-production.sqlite`**
|
||
|
||
---
|
||
|
||
## Где хранится база данных?
|
||
|
||
### Development:
|
||
```
|
||
./webapp/.wrangler/state/v3/d1/webapp-production.sqlite ✅ На вашем диске!
|
||
```
|
||
|
||
### Production:
|
||
```
|
||
./webapp/data/db/webapp-production.sqlite ✅ На вашем диске!
|
||
```
|
||
|
||
**Важно:** БД НЕ в Docker volume, а в папке проекта!
|
||
|
||
---
|
||
|
||
## Основные команды
|
||
|
||
```bash
|
||
# Запустить
|
||
docker-compose up
|
||
|
||
# Запустить в background
|
||
docker-compose up -d
|
||
|
||
# Остановить
|
||
docker-compose down
|
||
|
||
# Посмотреть логи
|
||
docker-compose logs -f
|
||
|
||
# Зайти в контейнер
|
||
docker-compose exec webapp sh
|
||
|
||
# Бэкап БД
|
||
./backup.sh
|
||
```
|
||
|
||
---
|
||
|
||
## Production режим
|
||
|
||
```bash
|
||
# 1. Создать папку для БД
|
||
mkdir -p data/db
|
||
|
||
# 2. Build и запуск
|
||
docker-compose -f docker-compose.prod.yml up --build -d
|
||
|
||
# 3. Проверить логи
|
||
docker-compose -f docker-compose.prod.yml logs -f
|
||
```
|
||
|
||
✅ **БД будет в `./data/db/webapp-production.sqlite`**
|
||
|
||
---
|
||
|
||
## Бэкап базы данных
|
||
|
||
```bash
|
||
# Автоматический бэкап
|
||
./backup.sh
|
||
|
||
# Ручной бэкап
|
||
cp .wrangler/state/v3/d1/webapp-production.sqlite \
|
||
backup-$(date +%Y%m%d).sqlite
|
||
```
|
||
|
||
Бэкапы сохраняются в папке `./backups/`
|
||
|
||
---
|
||
|
||
## Сброс базы данных
|
||
|
||
```bash
|
||
# Через Docker
|
||
docker-compose exec webapp npm run db:reset
|
||
|
||
# Или удалить и пересоздать
|
||
docker-compose down
|
||
rm -rf .wrangler/state/v3/d1
|
||
docker-compose up
|
||
```
|
||
|
||
---
|
||
|
||
## Troubleshooting
|
||
|
||
### Порт 3000 занят
|
||
|
||
```bash
|
||
# Убить процесс
|
||
fuser -k 3000/tcp
|
||
|
||
# Или изменить порт в docker-compose.yml
|
||
ports:
|
||
- "3001:3000"
|
||
```
|
||
|
||
### Контейнер не запускается
|
||
|
||
```bash
|
||
# Пересобрать без кэша
|
||
docker-compose down -v
|
||
docker-compose build --no-cache
|
||
docker-compose up
|
||
```
|
||
|
||
### БД не создаётся
|
||
|
||
```bash
|
||
# Зайти в контейнер и сбросить БД
|
||
docker-compose exec webapp sh
|
||
npm run db:reset
|
||
exit
|
||
```
|
||
|
||
---
|
||
|
||
## Полная документация
|
||
|
||
Смотрите **[DOCKER_GUIDE.md](DOCKER_GUIDE.md)** для подробной информации:
|
||
- Структура файлов
|
||
- Мониторинг
|
||
- Best practices
|
||
- Полный troubleshooting
|
||
|
||
---
|
||
|
||
## ✅ Проверка
|
||
|
||
После запуска проверьте:
|
||
|
||
1. **Приложение работает:**
|
||
```bash
|
||
curl http://localhost:3000
|
||
```
|
||
|
||
2. **БД создалась:**
|
||
```bash
|
||
ls -lh .wrangler/state/v3/d1/webapp-production.sqlite
|
||
```
|
||
|
||
3. **Health check OK:**
|
||
```bash
|
||
docker-compose ps
|
||
# Должно быть: (healthy)
|
||
```
|
||
|
||
4. **Демо-данные загружены:**
|
||
```bash
|
||
sqlite3 .wrangler/state/v3/d1/webapp-production.sqlite \
|
||
"SELECT COUNT(*) FROM production_records"
|
||
# Должно быть: 7
|
||
```
|
||
|
||
---
|
||
|
||
**🎉 Готово! AKNAPROFF работает в Docker с локальной БД!**
|
||
|
||
**URL:** http://localhost:3000
|
||
**Demo:** `admin` / `demo123` или **Public User** (без логина)
|
||
**БД:** `.wrangler/state/v3/d1/webapp-production.sqlite`
|