feat: добавлена пометка типа операции (Build/Push) в истории сборок Dockerfile

- Добавлена колонка 'Тип' во все таблицы истории сборок
- Для push операций отображается registry вместо платформ
- Сохранение пользователя при создании push лога
- Исправлена ошибка с logger в push_docker_image endpoint
- Улучшено отображение истории сборок с визуальными индикаторами
This commit is contained in:
Сергей Антропов
2026-02-15 22:59:02 +03:00
parent 23e1a6037b
commit 1fbf9185a2
232 changed files with 38075 additions and 5 deletions

View File

@@ -0,0 +1,219 @@
# Запуск веб-интерфейса в Docker
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
## 🐳 Быстрый старт
### 1. Запуск через docker-compose
```bash
cd app
make up
# или
docker-compose up -d
```
### 2. Проверка статуса
```bash
make status
# или
docker-compose ps
```
### 3. Просмотр логов
```bash
make logs
# или
docker-compose logs -f web
```
### 4. Открыть в браузере
- Веб-интерфейс: http://localhost:8000
- API документация: http://localhost:8000/api/docs
## 📋 Доступные команды
```bash
make build # Собрать образы
make up # Запустить контейнеры
make down # Остановить контейнеры
make restart # Перезапустить контейнеры
make logs # Показать логи веб-интерфейса
make logs-all # Показать логи всех сервисов
make shell # Открыть shell в контейнере web
make shell-celery # Открыть shell в контейнере celery-worker
make rebuild # Пересобрать и перезапустить
make clean # Очистить контейнеры и volumes
make status # Показать статус контейнеров
```
## 🏗️ Архитектура
### Сервисы
1. **web** - Веб-интерфейс FastAPI
- Порт: 8000
- Доступ к Docker socket для управления контейнерами
- Монтирование проекта для доступа к roles, molecule
2. **redis** - Redis для Celery
- Порт: 6379
- Хранение задач и результатов
3. **celery-worker** - Celery worker для фоновых задач
- Выполнение тестов, деплоев в фоне
- Доступ к Docker socket
4. **celery-beat** - Celery beat для периодических задач
- Опционально, для планирования задач
### Volumes
- `/workspace` - Весь проект DevOpsLab (монтируется из родительской директории)
- `/app` - Код веб-интерфейса (для hot reload)
- `/var/run/docker.sock` - Docker socket для управления контейнерами
### Networks
- `devopslab-network` - Внутренняя сеть для связи между сервисами
## 🔧 Настройка
### Переменные окружения
Все настройки через переменные окружения в `docker-compose.yml`:
- `PROJECT_ROOT=/workspace` - Корень проекта
- `DOCKER_HOST=unix:///var/run/docker.sock` - Docker socket
- `REDIS_URL=redis://redis:6379/0` - Redis для Celery
### Переопределение для разработки
Создайте `docker-compose.override.yml` для локальных настроек:
```yaml
version: '3.8'
services:
web:
ports:
- "8000:8000"
volumes:
- ./logs:/app/logs
```
## 🐛 Troubleshooting
### Ошибка: Cannot connect to Docker daemon
Убедитесь, что Docker socket доступен:
```bash
ls -la /var/run/docker.sock
```
### Ошибка: Permission denied
Добавьте пользователя в группу docker:
```bash
sudo usermod -aG docker $USER
```
Или запустите с sudo (не рекомендуется):
```bash
sudo docker-compose up -d
```
### Ошибка: Port already in use
Измените порт в `docker-compose.yml`:
```yaml
ports:
- "8001:8000" # Внешний порт:внутренний порт
```
### Просмотр логов всех сервисов
```bash
docker-compose logs -f
```
### Перезапуск конкретного сервиса
```bash
docker-compose restart web
docker-compose restart celery-worker
```
## 📊 Мониторинг
### Статус контейнеров
```bash
docker-compose ps
```
### Использование ресурсов
```bash
docker stats devopslab-web devopslab-redis devopslab-celery-worker
```
### Логи Redis
```bash
docker-compose logs redis
```
## 🔄 Обновление
### Обновление кода
```bash
# Остановить
make down
# Обновить код (git pull, etc.)
# Пересобрать и запустить
make rebuild
```
### Обновление зависимостей
```bash
# Отредактировать requirements.txt
# Пересобрать образ
make rebuild
```
## 🧹 Очистка
### Очистка контейнеров и volumes
```bash
make clean
```
### Очистка образов
```bash
docker-compose down --rmi all
```
### Полная очистка
```bash
make clean
docker system prune -a
```
## 📝 Примечания
- Веб-интерфейс имеет доступ к Docker socket для управления контейнерами тестирования
- Весь проект монтируется в `/workspace` для доступа к roles, molecule, etc.
- Redis данные сохраняются в volume `redis-data`
- Для разработки используйте `docker-compose.override.yml`