Fixed drone.yml
This commit is contained in:
188
DOCKER_BUILD_GUIDE.md
Normal file
188
DOCKER_BUILD_GUIDE.md
Normal file
@@ -0,0 +1,188 @@
|
||||
# 🐳 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
|
||||
Reference in New Issue
Block a user