- Добавлена колонка 'Тип' во все таблицы истории сборок - Для push операций отображается registry вместо платформ - Сохранение пользователя при создании push лога - Исправлена ошибка с logger в push_docker_image endpoint - Улучшено отображение истории сборок с визуальными индикаторами
220 lines
5.3 KiB
Markdown
220 lines
5.3 KiB
Markdown
# Запуск веб-интерфейса в 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`
|