Some checks failed
continuous-integration/drone/push Build encountered an error
5.5 KiB
5.5 KiB
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:
/healthendpoint - Volumes:
/app/servers,/app/data,/app/logs - Init процесс:
tini
Команда сборки:
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
Команда сборки:
cd frontend
# Production
docker build --target production -t mc-panel-frontend .
# Development
docker build --target development -t mc-panel-frontend-dev .
Способы запуска
1. Production (отдельные сервисы)
# 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)
# 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. Оригинальный (монолитный)
# 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
PORT=8000
WORKERS=2
PYTHONPATH=/app
DEBUG=false
LOG_LEVEL=INFO
Frontend (Development)
VITE_API_URL=http://localhost:8000
Volumes
Production
mc_servers- серверы Minecraftmc_data- данные приложенияmc_logs- логи
Development
mc_servers_dev- серверы (dev)mc_data_dev- данные (dev)mc_logs_dev- логи (dev)
Полезные команды
Логи
# 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
Остановка
# Production
docker-compose -f docker-compose.separate.yml down
# Development
docker-compose -f docker-compose.dev.yml down
Пересборка
# Production
docker-compose -f docker-compose.separate.yml build --no-cache
# Development
docker-compose -f docker-compose.dev.yml build --no-cache
Преимущества отдельных сервисов
- Масштабирование: можно запустить несколько backend инстансов
- Обновления: можно обновлять frontend и backend независимо
- Мониторинг: отдельные метрики для каждого сервиса
- Безопасность: изоляция сервисов
- Разработка: разные команды могут работать независимо
Рекомендации
- Для разработки: используйте
docker-compose.dev.yml - Для тестирования: используйте
docker-compose.separate.yml - Для production: рассмотрите Kubernetes или Docker Swarm
- Для CI/CD: можно собирать образы отдельно и деплоить независимо