/
serohvostov
/
radio_proxy
Обзор
Документация
Войти
/
serohvostov
/
radio_proxy
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
docker-scripts.sh
260 строк
7 KB
serohvostov
wip
24 дек 2025, 17:21
24 дек 2025, 17:21
2968b02
Код
Авторство
О чём код?
#!/bin/bash # =========================================== # СКРИПТЫ УПРАВЛЕНИЯ DOCKER КОНТЕЙНЕРАМИ # Speech Recognition Proxy Service # =========================================== set -e # Цвета для вывода RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Функция для вывода сообщений log_info() { echo -e "${BLUE}[INFO]${NC} $1" } log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # Проверка наличия .env файла check_env_file() { if [ ! -f .env ]; then log_warning ".env файл не найден. Создаю из .env.example..." if [ -f .env.example ]; then cp .env.example .env log_info "Скопирован .env.example в .env. Отредактируйте настройки при необходимости." else log_error ".env.example файл не найден!" exit 1 fi fi } # Сборка образа build() { log_info "Сборка Docker образа..." docker-compose build --no-cache log_success "Образ собран успешно!" } # Запуск сервисов start() { check_env_file # Подготавливаем директории log_info "Подготовка директорий..." if [ -f "./setup-directories.sh" ]; then chmod +x ./setup-directories.sh ./setup-directories.sh else mkdir -p ./audio_files ./logs chmod 755 ./audio_files ./logs fi log_info "Запуск сервисов..." docker-compose up -d if [ $? -eq 0 ]; then log_success "Сервисы запущены!" # Показать статус status else log_error "Ошибка при запуске сервисов!" exit 1 fi } # Остановка сервисов stop() { log_info "Остановка сервисов..." docker-compose down log_success "Сервисы остановлены!" } # Перезапуск сервисов restart() { log_info "Перезапуск сервисов..." stop start } # Статус сервисов status() { log_info "Статус сервисов:" docker-compose ps log_info "Логи (последние 20 строк):" docker-compose logs --tail=20 } # Просмотр логов logs() { local follow_flag="" if [ "$1" = "-f" ] || [ "$1" = "--follow" ]; then follow_flag="-f" fi log_info "Просмотр логов..." docker-compose logs $follow_flag } # Очистка clean() { log_info "Очистка Docker ресурсов..." # Остановка и удаление контейнеров docker-compose down --volumes --remove-orphans # Удаление образов docker-compose down --rmi all # Очистка неиспользуемых ресурсов docker system prune -f log_success "Очистка завершена!" } # Подключение к контейнеру shell() { local container_name=$(docker-compose ps -q speech-recognition-proxy) if [ -z "$container_name" ]; then log_error "Контейнер не запущен!" exit 1 fi log_info "Подключение к контейнеру..." docker exec -it $container_name /bin/bash } # Проверка здоровья health() { log_info "Проверка здоровья сервиса..." # Проверка TCP порта if nc -z localhost 1792; then log_success "TCP сервер (порт 1792) доступен" else log_error "TCP сервер (порт 1792) недоступен" fi # Проверка HTTP callback порта if nc -z localhost 8080; then log_success "HTTP callback сервер (порт 8080) доступен" else log_error "HTTP callback сервер (порт 8080) недоступен" fi # Статус контейнера docker-compose ps } # Обновление update() { log_info "Обновление сервиса..." # Остановка stop # Сборка нового образа build # Запуск start log_success "Обновление завершено!" } # Проверка конфигурации test_config() { log_info "Тестирование конфигурации..." # Проверяем, что контейнер запущен if ! docker-compose ps | grep -q "speech-recognition-proxy.*Up"; then log_warning "Контейнер не запущен. Запускаем..." start fi # Запускаем тест конфигурации docker-compose exec speech-recognition-proxy python test_config.py log_success "Тестирование конфигурации завершено!" } # Помощь help() { echo "Использование: $0 {команда}" echo "" echo "Доступные команды:" echo " build - Сборка Docker образа" echo " start - Запуск сервисов" echo " stop - Остановка сервисов" echo " restart - Перезапуск сервисов" echo " status - Показать статус сервисов" echo " logs - Просмотр логов (добавьте -f для следования)" echo " clean - Очистка Docker ресурсов" echo " shell - Подключение к контейнеру" echo " health - Проверка здоровья сервиса" echo " update - Обновление сервиса (stop + build + start)" echo " test - Тестирование конфигурации" echo " help - Показать эту справку" echo "" echo "Примеры:" echo " $0 start" echo " $0 logs -f" echo " $0 health" } # Основная логика case "${1:-help}" in build) build ;; start) start ;; stop) stop ;; restart) restart ;; status) status ;; logs) logs $2 ;; clean) clean ;; shell) shell ;; health) health ;; update) update ;; test) test_config ;; help|*) help ;; esac