All checks were successful
continuous-integration/drone/push Build is passing
86 lines
3.0 KiB
Bash
86 lines
3.0 KiB
Bash
#!/bin/bash
|
||
|
||
# Скрипт для быстрого запуска всех необходимых микросервисов Women Safety App
|
||
|
||
# Цвета для вывода
|
||
GREEN="\033[0;32m"
|
||
YELLOW="\033[0;33m"
|
||
BLUE="\033[0;34m"
|
||
RED="\033[0;31m"
|
||
NC="\033[0m" # No Color
|
||
|
||
echo -e "${BLUE}🚀 Запуск Women Safety App Microservices${NC}"
|
||
|
||
# Переход в директорию проекта
|
||
cd "$(dirname "$0")" || { echo -e "${RED}❌ Ошибка: Не удалось перейти в директорию проекта${NC}"; exit 1; }
|
||
|
||
# Проверка виртуального окружения
|
||
if [ ! -d "venv" ]; then
|
||
echo -e "${YELLOW}⚠️ Виртуальное окружение не найдено. Создаю новое...${NC}"
|
||
python3 -m venv venv
|
||
source venv/bin/activate
|
||
python -m pip install -r requirements.txt
|
||
else
|
||
echo -e "${GREEN}✅ Виртуальное окружение найдено${NC}"
|
||
source venv/bin/activate
|
||
fi
|
||
|
||
# Установка PYTHONPATH
|
||
export PYTHONPATH="${PWD}:${PYTHONPATH}"
|
||
|
||
# Функция для запуска сервиса
|
||
start_service() {
|
||
local name=$1
|
||
local port=$2
|
||
|
||
echo -e "${YELLOW}🔄 Запуск $name на порту $port...${NC}"
|
||
|
||
# Запускаем в фоновом режиме
|
||
python -m uvicorn services.${name}.main:app --host 0.0.0.0 --port $port &
|
||
|
||
# Сохраняем PID
|
||
echo $! > /tmp/${name}.pid
|
||
|
||
# Небольшая задержка для запуска
|
||
sleep 2
|
||
|
||
# Проверка запуска
|
||
if curl -s http://localhost:$port/health > /dev/null; then
|
||
echo -e "${GREEN}✅ $name успешно запущен на порту $port${NC}"
|
||
else
|
||
echo -e "${RED}❌ Ошибка: $name не запущен на порту $port${NC}"
|
||
fi
|
||
}
|
||
|
||
# Создание скрипта миграции БД
|
||
cat > migrate_db.py << 'EOF'
|
||
import asyncio
|
||
|
||
async def run_migrations():
|
||
from shared.database import init_db
|
||
print("🔄 Выполнение миграций базы данных...")
|
||
await init_db()
|
||
print("✅ Миграции успешно выполнены!")
|
||
|
||
if __name__ == "__main__":
|
||
asyncio.run(run_migrations())
|
||
EOF
|
||
|
||
# Запуск миграций
|
||
echo -e "${YELLOW}🔄 Применение миграций базы данных...${NC}"
|
||
python migrate_db.py
|
||
|
||
# Запуск всех микросервисов
|
||
start_service "user_service" 8001
|
||
start_service "emergency_service" 8002
|
||
start_service "location_service" 8003
|
||
start_service "calendar_service" 8004
|
||
start_service "notification_service" 8005
|
||
|
||
# IP для мобильного доступа
|
||
EXTERNAL_IP=$(hostname -I | awk '{print $1}')
|
||
echo -e "${BLUE}📱 IP для мобильного приложения: ${EXTERNAL_IP}:8000${NC}"
|
||
|
||
# Запуск API Gateway
|
||
echo -e "${GREEN}🚪 Запуск API Gateway на порту 8000...${NC}"
|
||
python -m uvicorn services.api_gateway.main:app --host 0.0.0.0 --port 8000 |