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

189 lines
5.8 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 - 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:<git-hash>` - привязка к коммиту (например: `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