Files
DevOpsLab/docs/web-interface-docker.md
Сергей Антропов 1fbf9185a2 feat: добавлена пометка типа операции (Build/Push) в истории сборок Dockerfile
- Добавлена колонка 'Тип' во все таблицы истории сборок
- Для push операций отображается registry вместо платформ
- Сохранение пользователя при создании push лога
- Исправлена ошибка с logger в push_docker_image endpoint
- Улучшено отображение истории сборок с визуальными индикаторами
2026-02-15 22:59:02 +03:00

220 lines
5.3 KiB
Markdown
Raw Permalink 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.

# Запуск веб-интерфейса в 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`