Fix: separate vault cache volume from read-only API dir
This commit is contained in:
parent
09bbc47d6c
commit
e3ad63b01f
2 changed files with 7 additions and 5 deletions
9
app.py
9
app.py
|
|
@ -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):
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue