#!/usr/bin/env bash set -euo pipefail DEPLOY_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SRC_DIR="/opt/konturai-migration/call-center-src" IMAGE="call-center-app:active-aimaq" SERVICES=( auth-service audit-service customer-service interaction-service voice-adapter-service recording-service reporting-service sales-service asterisk-bridge-service api-gateway ) echo "" echo "=== AIMAQ BACKEND DEPLOY ===" echo "Источник : $SRC_DIR" echo "Образ : $IMAGE" echo "" # 1. Сборка образа echo "[1/4] Сборка Docker образа..." docker build -t "$IMAGE" "$SRC_DIR" echo " Готово." # 2. Миграции БД echo "[2/4] Запуск миграций БД..." cd "$DEPLOY_DIR" docker compose -f docker-compose.minimal.yml run --rm migrate echo " Готово." # 3. Перезапуск сервисов echo "[3/4] Перезапуск сервисов..." docker compose -f docker-compose.minimal.yml up -d --no-deps --force-recreate "${SERVICES[@]}" echo " Готово." # 4. Проверка echo "[4/4] Проверка..." sleep 5 FAILED=() for SERVICE in "${SERVICES[@]}"; do CONTAINER="aimaq-call-center-${SERVICE}-1" # api-gateway имеет отдельное имя if [ "$SERVICE" = "api-gateway" ]; then CONTAINER="aimaq-call-center-app" fi STATUS=$(docker inspect --format '{{.State.Status}}' "$CONTAINER" 2>/dev/null || echo "not found") if [ "$STATUS" != "running" ]; then FAILED+=("$SERVICE ($STATUS)") fi done if [ ${#FAILED[@]} -eq 0 ]; then echo " Все сервисы запущены." else echo " ОШИБКА: следующие сервисы не запустились:" for F in "${FAILED[@]}"; do echo " - $F" done exit 1 fi echo "" echo "=== ДЕПЛОЙ ЗАВЕРШЁН ===" echo "API: https://aimaq.konturai.kz/proxy/" echo ""