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