Перейти к основному содержимому

Управление проектом

Жизненный цикл контейнеров

  • Запуск всех сервисов в фоновом режиме
docker compose up -d
  • Запуск с выводом логов в консоль
docker compose up
  • Остановка всех сервисов (данные сохраняются)
docker compose down
  • Полная остановка с удалением volumes

ВНИМАНИЕ: данная команда удалит все данные!

docker compose down -v
  • Перезапуск всех сервисов
docker compose restart
  • Перезапуск конкретного сервиса
docker compose restart yougile
docker compose restart nginx

Мониторинг и логи

  • Статус всех контейнеров
docker compose ps
  • Просмотр логов в реальном времени
docker compose logs -f
  • Логи конкретного сервиса
docker compose logs -f yougile
docker compose logs -f nginx
  • Последние N строк логов
docker compose logs --tail 100 yougile
  • Использование ресурсов
docker stats
  • Проверка работоспособности YouGile
curl -f http://localhost:8001 || echo "YouGile не отвечает"

Подключение к контейнерам

  • Подключение к контейнеру YouGile
docker compose exec yougile sh
  • Подключение к Nginx
docker compose exec nginx sh
  • Выполнение команд YouGile
docker compose exec yougile ./server task

Работа с Docker Volumes

YouGile использует именованные Docker volumes для хранения данных:

Просмотр содержимого volumes:

  • Просмотр файлов в базе данных
docker run --rm -v yougile_database:/data alpine ls -la /data
  • Просмотр пользовательских файлов
docker run --rm -v yougile_userdata:/data alpine ls -la /data
  • Просмотр логов
docker run --rm -v yougile_logs:/data alpine ls -la /data
  • Просмотр конкретного файла
docker run --rm -v yougile_database:/data alpine cat /data/conf.json

Копирование данных ИЗ volume на хост:

  • Экспорт базы данных
docker run --rm -v yougile_database:/data -v $(pwd):/backup alpine cp -r /data/. /backup/database/
  • Экспорт пользовательских файлов
docker run --rm -v yougile_userdata:/data -v $(pwd):/backup alpine cp -r /data/. /backup/user-data/

Копирование данных В volume с хоста:

Типичный сценарий: у вас есть каталог out с подкаталогами database и user-data, и вы хотите загрузить эти данные в контейнер.

Структура ваших данных:

out/
├── database/ # Ваша база данных
└── user-data/ # Ваши пользовательские файлы

Шаг 1: Остановите контейнеры

docker compose down

Шаг 2: Загрузите данные в volumes

Предположим, каталог out находится в текущей директории:

  • Очистка и загрузка базы данных из out/database в volume yougile_database
docker run --rm -v yougile_database:/data -v $(pwd)/out:/source alpine sh -c "rm -rf /data/* && cp -r /source/database/. /data/"
  • Очистка и загрузка пользовательских файлов из out/user-data в volume yougile_userdata
docker run --rm -v yougile_userdata:/data -v $(pwd)/out:/source alpine sh -c "rm -rf /data/* && cp -r /source/user-data/. /data/"

Если каталог out находится в другом месте:

  • Укажите полный путь к каталогу out
docker run --rm -v yougile_database:/data -v /path/to/out:/source alpine sh -c "rm -rf /data/* && cp -r /source/database/. /data/"
docker run --rm -v yougile_userdata:/data -v /path/to/out:/source alpine sh -c "rm -rf /data/* && cp -r /source/user-data/. /data/"

Шаг 3: Проверьте загруженные данные

  • Проверка содержимого базы данных
docker run --rm -v yougile_database:/data alpine ls -la /data
  • Проверка пользовательских файлов
docker run --rm -v yougile_userdata:/data alpine ls -la /data

Шаг 4: Запустите контейнеры

docker compose up -d

Пример полного процесса:

  1. Остановка
docker compose down
  1. Загрузка данных (каталог out в текущей директории)
docker run --rm -v yougile_database:/data -v $(pwd)/out:/source alpine sh -c "rm -rf /data/* && cp -r /source/database/. /data/"
docker run --rm -v yougile_userdata:/data -v $(pwd)/out:/source alpine sh -c "rm -rf /data/* && cp -r /source/user-data/. /data/"
  1. Проверка
docker run --rm -v yougile_database:/data alpine ls -la /data
docker run --rm -v yougile_userdata:/data alpine ls -la /data
  1. Запуск
docker compose up -d

ВАЖНО:

  • Команда rm -rf /data/* удаляет все существующие данные в volume перед копированием
  • Убедитесь, что у вас есть резервная копия данных перед выполнением операции
  • Путь /source/database/. означает "все содержимое каталога database" (точка в конце важна!)
  • Контейнеры должны быть остановлены во время замены данных

Обслуживание системы

  • Очистка Docker системы (освобождение места)
docker system prune -f
  • Проверка занятого места Docker
docker system df
  • Резервное копирование данных YouGile
docker run --rm -v yougile_database:/data -v $(pwd):/backup alpine tar czf /backup/yougile-backup-$(date +%Y%m%d).tar.gz -C /data .
  • Восстановление из резервной копии
docker run --rm -v yougile_database:/data -v $(pwd):/backup alpine tar xzf /backup/yougile-backup-YYYYMMDD.tar.gz -C /data