#!/bin/python3 import requests import time import subprocess import sys import os file_out = "out.log" file_err = "err.log" url_ping = "http://localhost:12001/ping" # Останавливаем контейнер без задержки subprocess.run(["docker", "compose", "stop", "site", "-t", "0"]) # Устанавливаем переменные окружения в зависимости от передачи аргумента env = os.environ.copy() if len(sys.argv) > 1 and sys.argv[1] == "debug": env["ARG1"] = "debug" # Запускаем сервис через Docker compose subprocess.run(["docker", "compose", "up", "site", "-d"], env=env) attempt_count = 0 while True: try: # Отправляем запрос для проверки поднялся ли HTTP сервер response = requests.get(url_ping, timeout=5) if response.status_code == 200: print("Сервер запущен") break except requests.ConnectionError: # смотрим есть ли ошибки в err.log try: with open(file_err, 'r') as ferr: err_content = ferr.read().strip() if err_content: print("Имеется ошибка компиляции или запуска, смотри файл " + file_err) exit(1) except FileNotFoundError: print("Лог файл" + file_err + " не найден, проверьте путь") print("Текущая директория" + os.getcwd()) # смотрим есть ли запись о старте дебагера try: with open(file_out, 'r') as file: content = file.read().strip() if content: # Лог файл не пуст, возможно запущен дебагер и ping дожидаться не стоит if content.startswith("API server listening at: [::]:2345"): # Лог файл начинается с сообщения о старте дебагера, ошибок нет break except FileNotFoundError: print("Лог файл " + file_out + " не найден, проверьте путь") print("Текущая директория" + os.getcwd()) # Если не удалось подключиться или не обнаружен старт дебагера то увеличиваем счетчик попыток attempt_count += 1 print(f"Ждем... ({attempt_count})") time.sleep(1)