FreddleSpl0it 3 mesiacov pred
rodič
commit
8d211ea767

+ 34 - 18
data/Dockerfiles/bootstrap/main.py

@@ -1,11 +1,43 @@
 import os
 import sys
 import signal
+import ipaddress
 
 def handle_sigterm(signum, frame):
   print("Received SIGTERM, exiting gracefully...")
   sys.exit(0)
 
+def get_mysql_config(service_name):
+  db_config = {
+    "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"),
+    "connection_timeout": 2,
+    "service_table": "service_settings",
+    "service_types": [service_name]
+  }
+
+  db_host = os.getenv("DB_HOST")
+  if db_host.startswith("/"):
+    db_config["host"] = "localhost"
+    db_config["unix_socket"] = db_host
+  else:
+    db_config["host"] = db_host
+
+  return db_config
+
+def get_redis_config():
+  redis_config = {
+    "read_host": os.getenv("REDIS_HOST"),
+    "read_port": 6379,
+    "write_host": os.getenv("REDIS_SLAVEOF_IP") or os.getenv("REDIS_HOST"),
+    "write_port": int(os.getenv("REDIS_SLAVEOF_PORT") or 6379),
+    "password": os.getenv("REDISPASS"),
+    "db": 0
+  }
+
+  return redis_config
+
 def main():
   signal.signal(signal.SIGTERM, handle_sigterm)
 
@@ -24,24 +56,8 @@ def main():
   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
-    }
+    db_config=get_mysql_config(service_name),
+    redis_config=get_redis_config()
   )
 
   b.bootstrap()

+ 2 - 1
data/Dockerfiles/bootstrap/modules/BootstrapBase.py

@@ -527,9 +527,10 @@ class BootstrapBase:
       "user": self.db_config['user'],
       "password": self.db_config['password'],
       "database": self.db_config['database'],
-      "unix_socket": socket or self.db_config['unix_socket'],
       'connection_timeout': self.db_config['connection_timeout']
     }
+    if self.db_config['unix_socket']:
+      config["unix_socket"] = socket or self.db_config['unix_socket']
 
     while True:
       try:

+ 1 - 4
data/Dockerfiles/bootstrap/modules/BootstrapPostfix.py

@@ -22,11 +22,8 @@ class BootstrapPostfix(BootstrapBase):
       lstrip_blocks=True,
       trim_blocks=True
     )
-    extra_config_path = Path("/opt/postfix/conf/extra.cf")
-    extra_config = extra_config_path.read_text() if extra_config_path.exists() else ""
     extra_vars = {
-      "VALID_CERT_DIRS": self.get_valid_cert_dirs(),
-      "EXTRA_CF": extra_config
+      "VALID_CERT_DIRS": self.get_valid_cert_dirs()
     }
     self.env_vars = self.prepare_template_vars('/service_config/overwrites.json', extra_vars)
 

+ 3 - 3
data/Dockerfiles/dockerapi/Dockerfile

@@ -19,9 +19,9 @@ RUN apk add --update --no-cache python3 \
   docker
 RUN mkdir /app/modules
 
-COPY docker-entrypoint.sh /app/
-COPY main.py /app/main.py
-COPY modules/ /app/modules/
+COPY data/Dockerfiles/dockerapi/docker-entrypoint.sh /app/
+COPY data/Dockerfiles/dockerapi/main.py /app/main.py
+COPY data/Dockerfiles/dockerapi/modules/ /app/modules/
 
 ENTRYPOINT ["/bin/sh", "/app/docker-entrypoint.sh"]
 CMD ["python", "main.py"]

+ 1 - 1
data/Dockerfiles/dockerapi/main.py

@@ -36,7 +36,7 @@ async def lifespan(app: FastAPI):
   if os.environ['REDIS_SLAVEOF_IP'] != "":
     redis_client = redis = await aioredis.from_url(f"redis://{os.environ['REDIS_SLAVEOF_IP']}:{os.environ['REDIS_SLAVEOF_PORT']}/0", password=os.environ['REDISPASS'])
   else:
-    redis_client = redis = await aioredis.from_url("redis://redis-mailcow:6379/0", password=os.environ['REDISPASS'])
+    redis_client = redis = await aioredis.from_url(f"redis://{os.environ['REDIS_HOST']}:6379/0", password=os.environ['REDISPASS'])
 
   # Init docker clients
   sync_docker_client = docker.DockerClient(base_url='unix://var/run/docker.sock', version='auto')