1
0
mirror of https://github.com/mailcow/mailcow-dockerized.git synced 2025-12-22 14:21:31 +00:00

Set HOST env vars

This commit is contained in:
FreddleSpl0it
2025-06-02 15:54:16 +02:00
parent 4cc463a728
commit 8d211ea767
5 changed files with 41 additions and 27 deletions

View File

@@ -1,11 +1,43 @@
import os import os
import sys import sys
import signal import signal
import ipaddress
def handle_sigterm(signum, frame): def handle_sigterm(signum, frame):
print("Received SIGTERM, exiting gracefully...") print("Received SIGTERM, exiting gracefully...")
sys.exit(0) 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(): def main():
signal.signal(signal.SIGTERM, handle_sigterm) signal.signal(signal.SIGTERM, handle_sigterm)
@@ -24,24 +56,8 @@ def main():
b = Bootstrap( b = Bootstrap(
container=container_name, container=container_name,
service=service_name, service=service_name,
db_config={ db_config=get_mysql_config(service_name),
"host": "localhost", redis_config=get_redis_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"),
"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() b.bootstrap()

View File

@@ -527,9 +527,10 @@ class BootstrapBase:
"user": self.db_config['user'], "user": self.db_config['user'],
"password": self.db_config['password'], "password": self.db_config['password'],
"database": self.db_config['database'], "database": self.db_config['database'],
"unix_socket": socket or self.db_config['unix_socket'],
'connection_timeout': self.db_config['connection_timeout'] '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: while True:
try: try:

View File

@@ -22,11 +22,8 @@ class BootstrapPostfix(BootstrapBase):
lstrip_blocks=True, lstrip_blocks=True,
trim_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 = { extra_vars = {
"VALID_CERT_DIRS": self.get_valid_cert_dirs(), "VALID_CERT_DIRS": self.get_valid_cert_dirs()
"EXTRA_CF": extra_config
} }
self.env_vars = self.prepare_template_vars('/service_config/overwrites.json', extra_vars) self.env_vars = self.prepare_template_vars('/service_config/overwrites.json', extra_vars)

View File

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

View File

@@ -36,7 +36,7 @@ async def lifespan(app: FastAPI):
if os.environ['REDIS_SLAVEOF_IP'] != "": 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']) 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: 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 # Init docker clients
sync_docker_client = docker.DockerClient(base_url='unix://var/run/docker.sock', version='auto') sync_docker_client = docker.DockerClient(base_url='unix://var/run/docker.sock', version='auto')