Fix containerised restarts

This commit is contained in:
2026-03-01 17:27:48 +00:00
parent 4521755344
commit d22924f6aa
7 changed files with 122 additions and 19 deletions

View File

@@ -4,6 +4,7 @@ from __future__ import annotations
from pathlib import Path
import argparse
import os
import shutil
def parse_env(path: Path) -> dict[str, str]:
@@ -46,7 +47,17 @@ def main() -> int:
env = parse_env(stack_env_path)
repo_dir = abs_from(repo_root, env.get("REPO_DIR", "."), ".")
host_uid = int(os.getuid())
host_gid = int(os.getgid())
app_db_file = abs_from(repo_root, env.get("APP_DATABASE_FILE", "./db.sqlite3"), "./db.sqlite3")
app_db_basename = app_db_file.name
sqlite_data_dir = abs_from(
repo_root,
env.get("QUADLET_SQLITE_DATA_DIR", "./.podman/gia_sqlite_data"),
"./.podman/gia_sqlite_data",
)
host_db_file = (sqlite_data_dir / app_db_basename).resolve()
app_db_path_in_container = f"/conf/{app_db_basename}"
redis_data_dir = abs_from(repo_root, env.get("QUADLET_REDIS_DATA_DIR", "./.podman/gia_redis_data"), "./.podman/gia_redis_data")
whatsapp_data_dir = abs_from(repo_root, env.get("QUADLET_WHATSAPP_DATA_DIR", "./.podman/gia_whatsapp_data"), "./.podman/gia_whatsapp_data")
@@ -56,8 +67,13 @@ def main() -> int:
uwsgi_ini = (repo_dir / "docker" / "uwsgi.ini").resolve()
redis_conf = (repo_dir / "docker" / "redis.conf").resolve()
for p in (redis_data_dir, whatsapp_data_dir, vrun_dir, signal_cli_dir):
for p in (redis_data_dir, whatsapp_data_dir, sqlite_data_dir, vrun_dir, signal_cli_dir):
p.mkdir(parents=True, exist_ok=True)
sqlite_data_dir.chmod(0o777)
if app_db_file.resolve() != host_db_file and app_db_file.exists() and not host_db_file.exists():
shutil.copy2(app_db_file, host_db_file)
host_db_file.touch(exist_ok=True)
host_db_file.chmod(0o666)
out_dir = Path(args.output_dir).expanduser().resolve()
out_dir.mkdir(parents=True, exist_ok=True)
@@ -143,10 +159,12 @@ WantedBy=gia.target
"Image=localhost/xf/gia:prod",
f"ContainerName={container_name}",
"Pod=gia.pod",
f"User={host_uid}:{host_gid}",
f"EnvironmentFile={env_file}",
"Environment=SIGNAL_HTTP_URL=http://127.0.0.1:8080",
f"Environment=APP_DATABASE_PATH={app_db_path_in_container}",
f"Volume={repo_dir}:/code",
f"Volume={app_db_file}:/conf/db.sqlite3",
f"Volume={sqlite_data_dir}:/conf",
f"Volume={vrun_dir}:/var/run",
]
if include_uwsgi: