Files
NeveTimePanel/DOCKER_SEPARATE_README.md
arkonsadter 1a3fdf131c
Some checks failed
continuous-integration/drone/push Build encountered an error
Fixed dockerfile
2026-01-21 19:14:22 +06:00

191 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MC Panel - Separate Docker Services
## Обзор
Теперь у вас есть отдельные Dockerfile для backend и frontend, что обеспечивает:
- **Лучшую изоляцию** - каждый сервис в своем контейнере
- **Независимое масштабирование** - можно масштабировать backend и frontend отдельно
- **Гибкость деплоя** - можно деплоить сервисы на разные серверы
- **Оптимизацию ресурсов** - каждый контейнер оптимизирован под свою задачу
## Структура файлов
```
mc-panel/
├── backend/
│ └── Dockerfile # Backend (FastAPI + Python)
├── frontend/
│ └── Dockerfile # Frontend (React + Nginx)
├── docker-compose.separate.yml # Production с отдельными сервисами
├── docker-compose.dev.yml # Development с hot reload
├── start-separate.bat # Запуск production
└── start-dev.bat # Запуск development
```
## Backend Dockerfile
**Особенности:**
- Базовый образ: `python:3.11-slim`
- Пользователь: `mcpanel` (UID/GID 1000)
- Порт: 8000
- Health check: `/health` endpoint
- Volumes: `/app/servers`, `/app/data`, `/app/logs`
- Init процесс: `tini`
**Команда сборки:**
```bash
cd backend
docker build -t mc-panel-backend .
```
## Frontend Dockerfile
**Multi-stage сборка:**
### Stage 1: Builder
- Базовый образ: `node:20-alpine`
- Собирает React приложение
- Оптимизирует статические файлы
### Stage 2: Production
- Базовый образ: `nginx:alpine`
- Служит статические файлы
- Проксирует API запросы к backend
- Поддерживает React Router (SPA)
### Stage 3: Development
- Базовый образ: `node:20-alpine`
- Vite dev server с hot reload
- Порт: 5173
**Команда сборки:**
```bash
cd frontend
# Production
docker build --target production -t mc-panel-frontend .
# Development
docker build --target development -t mc-panel-frontend-dev .
```
## Способы запуска
### 1. Production (отдельные сервисы)
```bash
# Windows
start-separate.bat
# Linux/macOS
docker-compose -f docker-compose.separate.yml up --build -d
```
**Доступ:**
- Frontend: http://localhost
- Backend API: http://localhost:8000
### 2. Development (с hot reload)
```bash
# Windows
start-dev.bat
# Linux/macOS
docker-compose -f docker-compose.dev.yml up --build -d
```
**Доступ:**
- Frontend Dev: http://localhost:5173
- Backend API: http://localhost:8000
### 3. Оригинальный (монолитный)
```bash
# Windows
docker-start.bat
# Linux/macOS
docker-compose up --build -d
```
## Конфигурация Nginx (Frontend)
Frontend Dockerfile включает оптимизированную конфигурацию Nginx:
- **Gzip сжатие** для статических файлов
- **Кеширование** статических ресурсов (1 год)
- **Security headers** (XSS, CSRF защита)
- **SPA поддержка** (React Router)
- **API прокси** на backend:8000
- **WebSocket прокси** для real-time функций
## Переменные окружения
### Backend
```env
PORT=8000
WORKERS=2
PYTHONPATH=/app
DEBUG=false
LOG_LEVEL=INFO
```
### Frontend (Development)
```env
VITE_API_URL=http://localhost:8000
```
## Volumes
### Production
- `mc_servers` - серверы Minecraft
- `mc_data` - данные приложения
- `mc_logs` - логи
### Development
- `mc_servers_dev` - серверы (dev)
- `mc_data_dev` - данные (dev)
- `mc_logs_dev` - логи (dev)
## Полезные команды
### Логи
```bash
# Production
docker-compose -f docker-compose.separate.yml logs -f backend
docker-compose -f docker-compose.separate.yml logs -f frontend
# Development
docker-compose -f docker-compose.dev.yml logs -f backend-dev
docker-compose -f docker-compose.dev.yml logs -f frontend-dev
```
### Остановка
```bash
# Production
docker-compose -f docker-compose.separate.yml down
# Development
docker-compose -f docker-compose.dev.yml down
```
### Пересборка
```bash
# Production
docker-compose -f docker-compose.separate.yml build --no-cache
# Development
docker-compose -f docker-compose.dev.yml build --no-cache
```
## Преимущества отдельных сервисов
1. **Масштабирование**: можно запустить несколько backend инстансов
2. **Обновления**: можно обновлять frontend и backend независимо
3. **Мониторинг**: отдельные метрики для каждого сервиса
4. **Безопасность**: изоляция сервисов
5. **Разработка**: разные команды могут работать независимо
## Рекомендации
- **Для разработки**: используйте `docker-compose.dev.yml`
- **Для тестирования**: используйте `docker-compose.separate.yml`
- **Для production**: рассмотрите Kubernetes или Docker Swarm
- **Для CI/CD**: можно собирать образы отдельно и деплоить независимо