Управление проектом
Жизненный цикл контейнеров
- Запуск всех сервисов в фоновом режиме
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
Пример полного процесса:
- Остановка
docker compose down
- Загрузка данных (каталог 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/"
- Проверка
docker run --rm -v yougile_database:/data alpine ls -la /data
docker run --rm -v yougile_userdata:/data alpine ls -la /data
- Запуск
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