Support Immich URL/API key via docker-compose env vars
Build and push server image / build-and-push (push) Successful in 33s
Build and push server image / build-and-push (push) Successful in 33s
docker-compose.yml is tracked in a repo meant for publishing, so it can't hold a real API key. Renamed it to docker-compose.yml.example (placeholder values, safe to commit) and gitignored the real docker-compose.yml -- deploying is now "cp the example, fill in real values, docker compose up", no .env file needed. config.load() now reads IMMICH_URL/IMMICH_API_KEY from the environment and applies them on top of whatever's in config.json, so setting them in the compose file's environment: block takes effect without ever touching the web UI. Env vars always win over the UI-saved values when both are present -- verified they survive a save() with different UI-entered values still in place.
This commit is contained in:
+15
-2
@@ -28,8 +28,21 @@ class FrameConfig(BaseModel):
|
||||
def load() -> FrameConfig:
|
||||
with _lock:
|
||||
if not CONFIG_PATH.exists():
|
||||
return FrameConfig()
|
||||
return FrameConfig(**json.loads(CONFIG_PATH.read_text()))
|
||||
cfg = FrameConfig()
|
||||
else:
|
||||
cfg = FrameConfig(**json.loads(CONFIG_PATH.read_text()))
|
||||
|
||||
# IMMICH_URL/IMMICH_API_KEY set in the environment (e.g. docker-compose.yml,
|
||||
# see docker-compose.yml.example) take precedence over whatever's saved
|
||||
# in CONFIG_PATH, so credentials never need to go through the web UI.
|
||||
env_url = os.environ.get("IMMICH_URL")
|
||||
env_key = os.environ.get("IMMICH_API_KEY")
|
||||
if env_url:
|
||||
cfg.immich_url = env_url
|
||||
if env_key:
|
||||
cfg.immich_api_key = env_key
|
||||
|
||||
return cfg
|
||||
|
||||
|
||||
def save(cfg: FrameConfig) -> None:
|
||||
|
||||
Reference in New Issue
Block a user