Files
NeveTimePanel/DOCKER_BUILD_GUIDE.md
2026-01-15 20:57:51 +06:00

5.8 KiB
Raw Blame History

🐳 MC Panel - Docker Build & Push Guide

📋 Обзор

Этот проект настроен для сборки и публикации Docker образов в registry registry.nevetime.ru/mc-panel.

🚀 Быстрый старт

Вариант 1: Сборка и публикация (рекомендуется)

BUILD_AND_PUSH_DOCKER.bat

Вариант 2: Раздельные команды

# Сборка образа
BUILD_DOCKER.bat

# Публикация образа
PUSH_DOCKER.bat

📦 Создаваемые теги

При сборке создаются 3 тега:

  • registry.nevetime.ru/mc-panel:latest - последняя версия
  • registry.nevetime.ru/mc-panel:<git-hash> - привязка к коммиту (например: abc1234)
  • registry.nevetime.ru/mc-panel:1.1.0 - версия релиза

🔧 Требования

  1. Docker Desktop - должен быть установлен и запущен
  2. Git (опционально) - для автоматического тегирования по хешу коммита
  3. Доступ к registry - учетные данные для registry.nevetime.ru

🔐 Авторизация в Registry

Перед первой публикацией выполните:

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

# 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

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

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