1
0
mirror of https://github.com/mailcow/mailcow-dockerized.git synced 2025-12-21 22:01:31 +00:00
Files
mailcow-dockerized/data/Dockerfiles/bootstrap/main.py
2025-05-23 09:49:08 +02:00

51 lines
1.5 KiB
Python

import os
import sys
import signal
def handle_sigterm(signum, frame):
print("Received SIGTERM, exiting gracefully...")
sys.exit(0)
def main():
signal.signal(signal.SIGTERM, handle_sigterm)
container_name = os.getenv("CONTAINER_NAME")
service_name = container_name.replace("-mailcow", "").replace("-", "")
module_name = f"Bootstrap{service_name.capitalize()}"
try:
mod = __import__(f"modules.{module_name}", fromlist=[module_name])
Bootstrap = getattr(mod, module_name)
except (ImportError, AttributeError) as e:
print(f"Failed to load bootstrap module for: {container_name}{module_name}")
print(str(e))
sys.exit(1)
b = Bootstrap(
container=container_name,
service=service_name,
db_config={
"host": "localhost",
"user": os.getenv("DBUSER") or os.getenv("MYSQL_USER"),
"password": os.getenv("DBPASS") or os.getenv("MYSQL_PASSWORD"),
"database": os.getenv("DBNAME") or os.getenv("MYSQL_DATABASE"),
"unix_socket": "/var/run/mysqld/mysqld.sock",
'connection_timeout': 2,
'service_table': "service_settings",
'service_types': [service_name]
},
redis_config={
"read_host": "redis-mailcow",
"read_port": 6379,
"write_host": os.getenv("REDIS_SLAVEOF_IP") or "redis-mailcow",
"write_port": int(os.getenv("REDIS_SLAVEOF_PORT") or 6379),
"password": os.getenv("REDISPASS"),
"db": 0
}
)
b.bootstrap()
if __name__ == "__main__":
main()