# 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 ```