Fix containerised restarts
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user