/
ioplock
/
lab10
Обзор
Документация
Войти
/
ioplock
/
lab10
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
start_localstack.py
76 строк
3 KB
Ioplock
Init
20 дек 2025, 11:13
20 дек 2025, 11:13
048884a
Код
Авторство
О чём код?
import subprocess import time import requests import os def start_localstack(): """Запускаем LocalStack через Docker Compose""" print("🚀 Запускаем LocalStack...") # Проверяем что Docker установлен try: subprocess.run(["docker", "--version"], check=True, capture_output=True) except: print("❌ Docker не установлен! Установите Docker Desktop") return False # Запускаем LocalStack try: print("📦 Запускаем контейнеры...") process = subprocess.Popen([ "docker-compose", "up", "-d" ], stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = process.communicate() if process.returncode != 0: print(f"❌ Ошибка запуска: {stderr.decode()}") return False # Ждем пока LocalStack запустится (может занять до 30 секунд) print("⏳ Ожидаем запуск LocalStack...") max_attempts = 15 for attempt in range(max_attempts): time.sleep(2) try: response = requests.get("http://localhost:4566/_localstack/health", timeout=2) if response.status_code == 200: print("✅ LocalStack успешно запущен!") return True except requests.exceptions.RequestException: if attempt < max_attempts - 1: print(f" Попытка {attempt + 1}/{max_attempts}...") else: # Проверяем статус контейнера try: result = subprocess.run( ["docker-compose", "ps"], capture_output=True, text=True ) print(f"❌ LocalStack не отвечает. Статус контейнера:\n{result.stdout}") except: pass print("❌ Не удалось подключиться к LocalStack после всех попыток") return False return False except Exception as e: print(f"❌ Ошибка: {e}") return False def stop_localstack(): """Останавливаем LocalStack""" print("🛑 Останавливаем LocalStack...") try: subprocess.run(["docker-compose", "down"], check=True) print("✅ LocalStack остановлен") except Exception as e: print(f"❌ Ошибка остановки: {e}") if __name__ == "__main__": start_localstack()