Секрет или ссылка не отображается в моем сервисе
Вы задали секрет или ${{name.KEY}} ссылку, переразвернули сервис, но работающий сервис всё равно не видит ожидаемое значение.
Что это значит
Заданное значение никогда не попало в объединённое окружение сервиса — или что-то другое при слиянии перезаписало его до запуска приложения.
Почему это может происходить
- Цель ссылки или ключ не существует. Ссылка на несуществующее имя сервиса/аддона или на ключ, который аддон не предоставляет, преобразуется в пустую строку вместо ошибки развёртывания. Нет никакого предупреждения — сервис просто запускается с пустым значением.
- Что-то с более высоким приоритетом перекрыло его. Значения объединяются в фиксированном порядке —
addon-issued env < project secrets < project env < app env < app secrets < platform vars— поэтому секрет уровня проекта (--global) может быть неявно перекрыт секретом уровня сервиса с тем же ключом, а платформенные переменные (PORT,LIZARD_SERVICE_NAME,LIZARD_PROJECT_ID,LIZARD_PUBLIC_DOMAIN) всегда побеждают и их невозможно переопределить. - Вы изменили значение времени сборки, но не пересобирали. Большинство изменений переменных применяются без пересборки — сервис перезапускается, чтобы их подхватить.
VITE_*иNEXT_PUBLIC_*— исключение: они запекаются в собранные артефакты, поэтому обычный перезапуск не подхватит новое значение; сервису нужна новая сборка.
Возможные решения
Убедитесь, что видит запущенный сервис
Это авторитетный источник — показывает окружение живого контейнера, а не то, что вы думали, что задали:
lizard ssh --service api -- env | grep DATABASE_URLЕсли ключ отсутствует или пуст, цель ссылки/ключ неверны, или для этой области ничего не задано. Проверьте имя аддона или сервиса через lizard ps, а ключ — с документированными переменными аддона.
Проверьте на предмет коллизии областей
Выведите секреты в обеих областях и сравните:
lizard secrets list --service api --show
lizard secrets list --global --showПомните: секреты приложения перекрывают секреты проекта — если существует значение уровня сервиса для того же ключа, оно побеждает всё, что задано через --global.
Пересоберите после изменения на этапе сборки
Если изменённый ключ — VITE_* или NEXT_PUBLIC_*, запустите настоящую пересборку, а не перезапуск:
lizard redeploy --service apiСм. Время сборки vs. время выполнения и Сборка Pipeline → что запускает пересборку.
См. также
- Переменные и секреты — области действия и приоритет.
- Межсервисные ссылки — синтаксис ссылок и их разрешение.