mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2025-12-22 06:11:32 +00:00
Set HOST env vars
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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"]
|
||||||
@@ -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')
|
||||||
|
|||||||
Reference in New Issue
Block a user