# Docker Setup для Sakai Vue

Этот проект настроен для работы с Docker. Ниже приведены инструкции по сборке и запуску приложения.

## Быстрый старт

### 1. Сборка и запуск с Docker Compose

```bash
# Сборка и запуск
docker-compose up --build

# Запуск в фоновом режиме
docker-compose up -d --build
```

Приложение будет доступно по адресу: http://localhost:3000

### 2. Сборка и запуск с Docker

```bash
# Сборка образа
docker build -t sakai-vue .

# Запуск контейнера
docker run -p 3000:80 sakai-vue
```

## Структура Docker файлов

- `Dockerfile` - основной файл для сборки образа (исправлен для dev зависимостей)
- `Dockerfile.optimized` - оптимизированная версия с non-root пользователем
- `docker-compose.yml` - конфигурация для Docker Compose
- `nginx.conf` - конфигурация Nginx для SPA приложения
- `.dockerignore` - файлы, исключаемые из контекста сборки

## Особенности конфигурации

### Multi-stage build
Dockerfile использует многоэтапную сборку:
1. **Builder stage** - сборка приложения с Node.js
2. **Production stage** - запуск с Nginx

### Nginx конфигурация
- Поддержка Vue Router history mode
- Gzip сжатие
- Кэширование статических ресурсов
- Security headers
- Health check endpoint

### Health Check
Приложение включает health check endpoint по адресу `/health`

## Решение проблем

### Проблема: "vite: not found" при сборке
**Причина:** Использование `npm ci --only=production` исключает dev зависимости, включая Vite.

**Решение:** Исправлено в Dockerfile - теперь используется `npm ci` для установки всех зависимостей, включая dev зависимости, необходимые для сборки.

### Проблема: Уязвимости безопасности
**Решение:** Используйте `Dockerfile.optimized` который:
- Создает non-root пользователя
- Устанавливает минимальные права доступа
- Включает health checks

## Команды для разработки

```bash
# Остановка контейнеров
docker-compose down

# Просмотр логов
docker-compose logs -f

# Пересборка без кэша
docker-compose build --no-cache

# Вход в контейнер
docker exec -it sakai-vue-app sh

# Тестирование исправленного Dockerfile
docker build -t sakai-vue-test .
```

## Переменные окружения

Вы можете настроить переменные окружения в `docker-compose.yml`:

```yaml
environment:
  - NODE_ENV=production
  - API_URL=https://your-api.com
```

## Производственное развертывание

Для продакшена рекомендуется:

1. Использовать конкретные версии образов
2. Настроить SSL/TLS
3. Использовать внешний reverse proxy
4. Настроить мониторинг и логирование

```bash
# Пример для продакшена
docker run -d \
  --name sakai-vue-prod \
  --restart unless-stopped \
  -p 80:80 \
  -p 443:443 \
  -v /path/to/ssl:/etc/nginx/ssl \
  sakai-vue
```
