This commit is contained in:
86
run_microservices.sh
Normal file
86
run_microservices.sh
Normal file
@@ -0,0 +1,86 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user