115 lines
3.7 KiB
Markdown
115 lines
3.7 KiB
Markdown
# 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
|
||
```
|