- New Build and startup procedures for all services, compliant for both docker, podman and k8s

This commit is contained in:
Josako
2025-09-01 19:58:28 +02:00
parent 35f58f0c57
commit 593dd438aa
29 changed files with 527 additions and 691 deletions

67
scripts/run.py Normal file
View File

@@ -0,0 +1,67 @@
#!/usr/bin/env python3
import os
import sys
import importlib
def main():
component = os.getenv('COMPONENT_NAME', 'eveai_app')
role = os.getenv('ROLE', 'web')
if role == 'web':
# Web services
from gevent import monkey
monkey.patch_all()
try:
module = importlib.import_module(component)
app = module.create_app()
except ImportError as e:
print(f"Error importing {component}: {e}", file=sys.stderr)
sys.exit(1)
except AttributeError as e:
print(f"Error: {component} module does not have create_app function: {e}", file=sys.stderr)
sys.exit(1)
elif role in ['worker', 'beat']:
# Worker services
try:
module = importlib.import_module(component)
celery = module.celery
except ImportError as e:
print(f"Error importing {component}: {e}", file=sys.stderr)
sys.exit(1)
except AttributeError as e:
print(f"Error: {component} module does not have celery object: {e}", file=sys.stderr)
sys.exit(1)
else:
print(f"Unknown role: {role}", file=sys.stderr)
sys.exit(1)
# For web services - expose app object for gunicorn
if os.getenv('ROLE', 'web') == 'web':
component = os.getenv('COMPONENT_NAME', 'eveai_app')
try:
from gevent import monkey
monkey.patch_all()
module = importlib.import_module(component)
app = module.create_app()
except (ImportError, AttributeError) as e:
print(f"Error setting up app for {component}: {e}", file=sys.stderr)
app = None
# For worker/beat services - expose celery object
elif os.getenv('ROLE') in ['worker', 'beat']:
component = os.getenv('COMPONENT_NAME', 'eveai_workers')
try:
module = importlib.import_module(component)
celery = module.celery
except (ImportError, AttributeError) as e:
print(f"Error setting up celery for {component}: {e}", file=sys.stderr)
celery = None
if __name__ == '__main__':
main()