- Добавлена колонка 'Тип' во все таблицы истории сборок - Для push операций отображается registry вместо платформ - Сохранение пользователя при создании push лога - Исправлена ошибка с logger в push_docker_image endpoint - Улучшено отображение истории сборок с визуальными индикаторами
5.3 KiB
5.3 KiB
Запуск веб-интерфейса в Docker
Автор: Сергей Антропов
Сайт: https://devops.org.ru
🐳 Быстрый старт
1. Запуск через docker-compose
cd app
make up
# или
docker-compose up -d
2. Проверка статуса
make status
# или
docker-compose ps
3. Просмотр логов
make logs
# или
docker-compose logs -f web
4. Открыть в браузере
- Веб-интерфейс: http://localhost:8000
- API документация: http://localhost:8000/api/docs
📋 Доступные команды
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 # Показать статус контейнеров
🏗️ Архитектура
Сервисы
-
web - Веб-интерфейс FastAPI
- Порт: 8000
- Доступ к Docker socket для управления контейнерами
- Монтирование проекта для доступа к roles, molecule
-
redis - Redis для Celery
- Порт: 6379
- Хранение задач и результатов
-
celery-worker - Celery worker для фоновых задач
- Выполнение тестов, деплоев в фоне
- Доступ к Docker socket
-
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 socketREDIS_URL=redis://redis:6379/0- Redis для Celery
Переопределение для разработки
Создайте docker-compose.override.yml для локальных настроек:
version: '3.8'
services:
web:
ports:
- "8000:8000"
volumes:
- ./logs:/app/logs
🐛 Troubleshooting
Ошибка: Cannot connect to Docker daemon
Убедитесь, что Docker socket доступен:
ls -la /var/run/docker.sock
Ошибка: Permission denied
Добавьте пользователя в группу docker:
sudo usermod -aG docker $USER
Или запустите с sudo (не рекомендуется):
sudo docker-compose up -d
Ошибка: Port already in use
Измените порт в docker-compose.yml:
ports:
- "8001:8000" # Внешний порт:внутренний порт
Просмотр логов всех сервисов
docker-compose logs -f
Перезапуск конкретного сервиса
docker-compose restart web
docker-compose restart celery-worker
📊 Мониторинг
Статус контейнеров
docker-compose ps
Использование ресурсов
docker stats devopslab-web devopslab-redis devopslab-celery-worker
Логи Redis
docker-compose logs redis
🔄 Обновление
Обновление кода
# Остановить
make down
# Обновить код (git pull, etc.)
# Пересобрать и запустить
make rebuild
Обновление зависимостей
# Отредактировать requirements.txt
# Пересобрать образ
make rebuild
🧹 Очистка
Очистка контейнеров и volumes
make clean
Очистка образов
docker-compose down --rmi all
Полная очистка
make clean
docker system prune -a
📝 Примечания
- Веб-интерфейс имеет доступ к Docker socket для управления контейнерами тестирования
- Весь проект монтируется в
/workspaceдля доступа к roles, molecule, etc. - Redis данные сохраняются в volume
redis-data - Для разработки используйте
docker-compose.override.yml