import os import subprocess import time import socket def check_port(host, port): try: with socket.create_connection((host, port), timeout=1): return True except OSError: return False def start_perplexica(): print("Starte Docker Compose...") subprocess.run(["docker-compose", "up", "-d"], check=True) print("Docker Compose wurde gestartet.") print("Warte bis Perplexica backend und frontend erreichbar ist...") # Warte auf den Backend-API-Port (3001) und Frontend Port (3000) backend_ready = False frontend_ready = False while not backend_ready or not frontend_ready: if not backend_ready: backend_ready = check_port("127.0.0.1",3001) if backend_ready: print("Perplexica backend ist erreichbar") if not frontend_ready: frontend_ready = check_port("127.0.0.1",3000) if frontend_ready: print("Perplexica frontend ist erreichbar") if not backend_ready or not frontend_ready: time.sleep(5) print("Perplexica ist bereit.") # Ermittle die öffentliche URL und gib sie aus (wichtig für Huggingface Spaces) public_url = os.environ.get("SPACE_PUBLIC_URL", "http://127.0.0.1:7860") # Standard wenn keine variable print(f"Perplexica UI ist erreichbar unter: {public_url}") if __name__ == "__main__": start_perplexica()