Fix: separate vault cache volume from read-only API dir

This commit is contained in:
sascha 2026-04-18 10:25:59 +02:00
parent 09bbc47d6c
commit e3ad63b01f
2 changed files with 7 additions and 5 deletions

9
app.py
View file

@ -8,11 +8,12 @@ from fastapi.responses import JSONResponse
from contextlib import asynccontextmanager from contextlib import asynccontextmanager
log = logging.getLogger("butler") log = logging.getLogger("butler")
VAULT_REFRESH_MINUTES = int(os.environ.get("VAULT_REFRESH_MINUTES", "30"))
API_DIR = os.environ.get("API_KEY_DIR", "/data/api") API_DIR = os.environ.get("API_KEY_DIR", "/data/api")
BUTLER_TOKEN = os.environ.get("BUTLER_TOKEN", "") BUTLER_TOKEN = os.environ.get("BUTLER_TOKEN", "")
BW_PASSWORD = os.environ.get("BW_PASSWORD", "") BW_PASSWORD = os.environ.get("BW_PASSWORD", "")
VAULT_REFRESH_MINUTES = int(os.environ.get("VAULT_REFRESH_MINUTES", "30")) VAULT_CACHE_DIR = os.environ.get("VAULT_CACHE_DIR", "/data/vault-cache")
# --- Vault sync --- # --- Vault sync ---
@ -59,10 +60,10 @@ def _sync_vault():
new_cache[name] = notes.strip() new_cache[name] = notes.strip()
_vault_cache = new_cache _vault_cache = new_cache
# Write to disk as cache (fallback if vault unreachable later) # Write to disk as cache (fallback if vault unreachable later)
os.makedirs(f"{API_DIR}/.vault-cache", exist_ok=True) os.makedirs(VAULT_CACHE_DIR, exist_ok=True)
for name, value in new_cache.items(): for name, value in new_cache.items():
safe = name.lower().replace(" ", "-") safe = name.lower().replace(" ", "-")
with open(f"{API_DIR}/.vault-cache/{safe}", "w") as f: with open(f"{VAULT_CACHE_DIR}/{safe}", "w") as f:
f.write(value) f.write(value)
log.info(f"Vault sync: {len(new_cache)} items cached") log.info(f"Vault sync: {len(new_cache)} items cached")
return True return True
@ -73,7 +74,7 @@ def _sync_vault():
def _load_disk_cache(): def _load_disk_cache():
"""Load cached vault items from disk (fallback).""" """Load cached vault items from disk (fallback)."""
global _vault_cache global _vault_cache
cache_dir = f"{API_DIR}/.vault-cache" cache_dir = VAULT_CACHE_DIR
if not os.path.isdir(cache_dir): if not os.path.isdir(cache_dir):
return return
for f in os.listdir(cache_dir): for f in os.listdir(cache_dir):

View file

@ -7,9 +7,10 @@ services:
- "8888:8888" - "8888:8888"
volumes: volumes:
- /app-config/kiro/api:/data/api:ro - /app-config/kiro/api:/data/api:ro
- vault-cache:/data/api/.vault-cache - vault-cache:/data/vault-cache
environment: environment:
- API_KEY_DIR=/data/api - API_KEY_DIR=/data/api
- VAULT_CACHE_DIR=/data/vault-cache
- BUTLER_TOKEN=${BUTLER_TOKEN} - BUTLER_TOKEN=${BUTLER_TOKEN}
- BW_PASSWORD=${BW_PASSWORD} - BW_PASSWORD=${BW_PASSWORD}
- VAULT_REFRESH_MINUTES=30 - VAULT_REFRESH_MINUTES=30