main.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import os
  2. import sys
  3. import signal
  4. def handle_sigterm(signum, frame):
  5. print("Received SIGTERM, exiting gracefully...")
  6. sys.exit(0)
  7. def main():
  8. signal.signal(signal.SIGTERM, handle_sigterm)
  9. container_name = os.getenv("CONTAINER_NAME")
  10. if container_name == "sogo-mailcow":
  11. from modules.BootstrapSogo import Bootstrap
  12. elif container_name == "nginx-mailcow":
  13. from modules.BootstrapNginx import Bootstrap
  14. elif container_name == "postfix-mailcow":
  15. from modules.BootstrapPostfix import Bootstrap
  16. elif container_name == "dovecot-mailcow":
  17. from modules.BootstrapDovecot import Bootstrap
  18. elif container_name == "rspamd-mailcow":
  19. from modules.BootstrapRspamd import Bootstrap
  20. elif container_name == "clamd-mailcow":
  21. from modules.BootstrapClamd import Bootstrap
  22. elif container_name == "mysql-mailcow":
  23. from modules.BootstrapMysql import Bootstrap
  24. elif container_name == "php-fpm-mailcow":
  25. from modules.BootstrapPhpfpm import Bootstrap
  26. else:
  27. print(f"No bootstrap handler for container: {container_name}", file=sys.stderr)
  28. sys.exit(1)
  29. b = Bootstrap(
  30. container=container_name,
  31. db_config={
  32. "host": "localhost",
  33. "user": os.getenv("DBUSER") or os.getenv("MYSQL_USER"),
  34. "password": os.getenv("DBPASS") or os.getenv("MYSQL_PASSWORD"),
  35. "database": os.getenv("DBNAME") or os.getenv("MYSQL_DATABASE"),
  36. "unix_socket": "/var/run/mysqld/mysqld.sock",
  37. 'connection_timeout': 2
  38. },
  39. db_table="service_settings",
  40. db_settings=['sogo'],
  41. redis_config={
  42. "host": os.getenv("REDIS_SLAVEOF_IP") or "redis-mailcow",
  43. "port": int(os.getenv("REDIS_SLAVEOF_PORT") or 6379),
  44. "password": os.getenv("REDISPASS"),
  45. "db": 0
  46. }
  47. )
  48. b.bootstrap()
  49. if __name__ == "__main__":
  50. main()