# 🐳 MC Panel - Docker Build & Push Guide ## 📋 Обзор Этот проект настроен для сборки и публикации Docker образов в registry `registry.nevetime.ru/mc-panel`. ## 🚀 Быстрый старт ### Вариант 1: Сборка и публикация (рекомендуется) ```bash BUILD_AND_PUSH_DOCKER.bat ``` ### Вариант 2: Раздельные команды ```bash # Сборка образа BUILD_DOCKER.bat # Публикация образа PUSH_DOCKER.bat ``` ## 📦 Создаваемые теги При сборке создаются 3 тега: - `registry.nevetime.ru/mc-panel:latest` - последняя версия - `registry.nevetime.ru/mc-panel:` - привязка к коммиту (например: `abc1234`) - `registry.nevetime.ru/mc-panel:1.1.0` - версия релиза ## 🔧 Требования 1. **Docker Desktop** - должен быть установлен и запущен 2. **Git** (опционально) - для автоматического тегирования по хешу коммита 3. **Доступ к registry** - учетные данные для `registry.nevetime.ru` ## 🔐 Авторизация в Registry Перед первой публикацией выполните: ```bash docker login registry.nevetime.ru ``` Введите ваши учетные данные: - Username: `<ваш_username>` - Password: `<ваш_password>` ## 📝 Описание скриптов ### BUILD_DOCKER.bat Собирает Docker образ с тремя тегами: - Проверяет наличие Docker - Получает git hash (если доступен) - Собирает multi-stage образ (frontend + backend) - Создает теги: latest, git-hash, version ### PUSH_DOCKER.bat Публикует все теги в registry: - Проверяет наличие Docker - Последовательно публикует все 3 тега - Выводит статус каждой операции ### BUILD_AND_PUSH_DOCKER.bat Комбинированный скрипт: - Запускает BUILD_DOCKER.bat - При успехе запускает PUSH_DOCKER.bat - Останавливается при ошибках ## 🏗️ Структура Dockerfile ```dockerfile # Stage 1: Frontend build (Node.js) FROM node:18-alpine AS frontend-builder # ... сборка React приложения # Stage 2: Backend + Frontend FROM python:3.11-slim # ... установка Python зависимостей # ... копирование backend # ... копирование собранного frontend ``` ## 🔄 CI/CD с Drone Проект также настроен для автоматической сборки через Drone CI: ### Пайплайны: 1. **code-quality** - проверка качества кода (lint, security) 2. **build-and-publish** - сборка и публикация образа ### Триггеры: - Push в ветки: `main`, `master`, `develop` - Создание тегов ### Секреты Drone: Настройте в Drone UI: - `docker_username` - имя пользователя registry - `docker_password` - пароль registry ## 📊 Размер образа Благодаря multi-stage build: - Frontend build stage: ~500MB (не включается в финальный образ) - Final image: ~200-300MB (Python + compiled frontend) ## 🐛 Устранение неполадок ### Docker не запущен ``` [ERROR] Docker is not installed or not running! ``` **Решение:** Запустите Docker Desktop ### Ошибка авторизации ``` unauthorized: authentication required ``` **Решение:** Выполните `docker login registry.nevetime.ru` ### Ошибка сборки ``` [ERROR] Build failed! ``` **Решение:** - Проверьте логи сборки - Убедитесь что все файлы на месте (frontend/package.json, backend/requirements.txt) - Проверьте Dockerfile на ошибки ### Git не найден Если git не установлен, используется тег `local` вместо git hash. Это нормально для локальной разработки. ## 📌 Использование образа ### Docker Compose ```yaml version: '3.8' services: mc-panel: image: registry.nevetime.ru/mc-panel:latest ports: - "8000:8000" volumes: - ./backend/data:/app/backend/data - ./backend/servers:/app/backend/servers environment: - SECRET_KEY=your-secret-key ``` ### Docker Run ```bash docker run -d \ -p 8000:8000 \ -v $(pwd)/backend/data:/app/backend/data \ -v $(pwd)/backend/servers:/app/backend/servers \ registry.nevetime.ru/mc-panel:latest ``` ## 🔄 Обновление версии Для создания нового релиза: 1. Обновите версию в `BUILD_DOCKER.bat` (строка `VERSION=1.1.0`) 2. Создайте git tag: `git tag v1.1.0` 3. Запустите сборку: `BUILD_AND_PUSH_DOCKER.bat` 4. Push тега: `git push origin v1.1.0` ## 📚 Дополнительная информация - Registry: `registry.nevetime.ru` - Repository: `mc-panel` - Base images: `node:18-alpine`, `python:3.11-slim` - Exposed port: `8000` - Health check: `/api/auth/oidc/providers` ## ✅ Checklist перед публикацией - [ ] Docker Desktop запущен - [ ] Авторизация в registry выполнена - [ ] Все изменения закоммичены в git - [ ] Версия обновлена (если нужно) - [ ] Тесты пройдены - [ ] Образ собран успешно - [ ] Образ опубликован в registry --- **Версия документа:** 1.0 **Дата:** 2026-01-15 **Проект:** MC Panel v1.1.0