Ein Secret oder Verweis erscheint nicht in meinem Service
Du hast ein Secret oder einen ${{name.KEY}}-Verweis gesetzt, erneut bereitgestellt, und der laufende Service sieht den erwarteten Wert trotzdem nicht.
Was das bedeutet
Der von dir gesetzte Wert ist nie in die zusammengeführte Umgebung des Service gelangt — oder etwas anderes in der Zusammenführung hat ihn überschrieben, bevor die App gestartet wurde.
Warum das passieren kann
- Das Verweisziel oder der Schlüssel existiert nicht. Ein Verweis auf einen fehlenden Service-/Add-on-Namen oder auf einen Schlüssel, den dieses Add-on nicht bereitstellt, wird zu einem leeren String aufgelöst, statt das Deployment fehlschlagen zu lassen. Das Build-Log gibt für jeden leeren Verweis eine Warnung mit dem Grund aus; bei einer Variablenänderung, die per Neustart ohne Build übernommen wird, erscheint keine Warnung. Ein umbenanntes Ziel gilt bei Verweisen, die mit
lizard secrets setoder im Dashboard gesetzt wurden, als fehlend: Sie beziehen sich auf den aktuellen Namen. Ein Service als Ziel stellt dieDATABASE_URLoderREDIS_URL, die Lizard in ihn einfügt, nicht bereit; verweise stattdessen auf das Add-on. - Etwas mit höherer Priorität hat ihn überschrieben. Werte werden in einer festen Reihenfolge zusammengeführt —
addon-issued env < project secrets < project env < app env < app secrets < platform vars— daher kann ein projektbezogenes (--global) Secret stillschweigend von einem servicebezogenen Secret mit demselben Schlüssel verdeckt werden, und Plattformvariablen (PORT,LIZARD_SERVICE_NAME,LIZARD_PROJECT_ID,LIZARD_PUBLIC_DOMAIN,LIZARD_PRIVATE_DOMAIN) haben immer Vorrang. EinPORT, den du setzt, ändert das Routing nur bei einem Service, dessen Port nie gesetzt wurde. Bei einem Service, denlizard upangelegt hat oder dessen Port mit--port,lizard portoder im Dashboard gesetzt wurde, überschreibt Lizard ihn; ändere den Port mitlizard port <n>. - Ein Build-Zeit-Wert hat den Build nicht erreicht. Die meisten Variablenänderungen werden ohne Rebuild übernommen — der Service startet neu, um sie zu übernehmen.
VITE_*- undNEXT_PUBLIC_*-Werte werden in die gebauten Assets eingebettet, und eine Änderung mitlizard secrets setoder in den Einstellungen eines Service startet sofort einen Rebuild laufender Services. Eine Änderung auf der Secrets-Seite des Projekts im Dashboard startet keinen Rebuild. Ein Service, der zu diesem Zeitpunkt abgestürzt oder gestoppt war, wird übersprungen, und ein Service mit eigenemdockerfilePathoder einer Bereitstellung perlizard upohne Build-/Start-Befehle erhält diese Werte zur Build-Zeit nie.
Mögliche Lösungen
Prüfe das Build-Log auf leere Verweise
Shell-Zugriff auf Services (lizard ssh) ist deaktiviert. Das Build-Log ist die richtige Anlaufstelle: Jeder leere Verweis erhält eine Zeile wie ==> Warning: ... is empty mit dem Grund.
lizard logs --build --service apiListe danach die Schlüssel der Add-ons und die LIZARD_*- und PORT-Schlüssel jedes Service auf, und vergleiche Name und Schlüssel mit deinen. Verweise auf die eigenen Variablen und Secrets eines anderen Service funktionieren, werden aber nicht aufgelistet; prüfe diese mit lizard secrets list --service <target>. Prüfe Schlüssel anhand der dokumentierten Variablen des Add-ons:
lizard secrets list --service api --refPrüfe auf eine Kollision zwischen Geltungsbereichen
Liste Secrets in beiden Geltungsbereichen auf und vergleiche sie:
lizard secrets list --service api --show
lizard secrets list --global --showDenke daran: App-Secrets überschreiben Projekt-Secrets — wenn ein servicebezogener Wert für denselben Schlüssel existiert, hat er Vorrang vor allem, was mit --global gesetzt wurde.
Nach einer Änderung zur Build-Zeit neu bauen
Wenn der geänderte Schlüssel VITE_* oder NEXT_PUBLIC_* ist und der Service bei der Änderung abgestürzt oder gestoppt war oder du den Schlüssel auf der Secrets-Seite des Projekts im Dashboard geändert hast, löse einen Rebuild aus:
lizard redeploy --service apiSiehe Build-Zeit vs. Laufzeit und Build-Pipeline → was einen Rebuild auslöst.
Siehe auch
- Variablen & Secrets — Geltungsbereiche und Priorität.
- Service-übergreifende Verweise — Verweissyntax und Auflösung.
Aktualisiert