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

5.3 KiB
Raw Permalink Blame History

Запуск веб-интерфейса в 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. Открыть в браузере

📋 Доступные команды

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 для локальных настроек:

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