Un secreto o una referencia no aparece en mi servicio
Configuraste un secreto o una referencia ${{name.KEY}}, volviste a desplegar y el servicio en ejecución sigue sin ver el valor que esperas.
Qué significa esto
El valor que configuraste nunca llegó al entorno combinado del servicio, o algo más en la combinación lo sobrescribió antes de que la app se iniciara.
Por qué puede pasar esto
- El destino o la clave de la referencia no existen. Una referencia a un nombre de servicio/addon que no existe, o a una clave que ese addon no expone, se resuelve como una cadena vacía en lugar de hacer fallar el despliegue. No hay ningún error que te avise: el servicio simplemente arranca con un valor vacío.
- Algo con mayor precedencia lo sobrescribió. Los valores se combinan en un orden fijo —
addon-issued env < project secrets < project env < app env < app secrets < platform vars— así que un secreto con alcance de proyecto (--global) puede quedar oculto silenciosamente por uno con alcance de servicio con la misma clave, y las variables de la plataforma (PORT,LIZARD_SERVICE_NAME,LIZARD_PROJECT_ID,LIZARD_PUBLIC_DOMAIN) siempre prevalecen y no se pueden sobrescribir en absoluto. - Cambiaste un valor de tiempo de compilación pero no recompilaste. La mayoría de los cambios de variables se aplican sin recompilar: el servicio se reinicia para tomarlos. Los valores de
VITE_*yNEXT_PUBLIC_*son la excepción: quedan integrados en los recursos compilados, así que un reinicio normal no aplicará un valor nuevo; el servicio necesita una compilación nueva.
Posibles soluciones
Confirma lo que realmente ve el servicio en ejecución
Esto es determinante: muestra el entorno del contenedor activo, no lo que crees haber configurado:
lizard ssh --service api -- env | grep DATABASE_URLSi la clave falta o está vacía, el destino/clave de la referencia es incorrecto, o no hay nada configurado para ese alcance. Vuelve a comprobar el nombre del addon o servicio con lizard ps, y la clave en las variables documentadas del addon.
Comprueba si hay una colisión de alcance
Enumera los secretos en ambos alcances y compáralos:
lizard secrets list --service api --show
lizard secrets list --global --showRecuerda que los secretos de la app sobrescriben los secretos del proyecto: si existe un valor con alcance de servicio para la misma clave, prevalece sobre cualquier cosa configurada con --global.
Recompila después de un cambio en tiempo de compilación
Si la clave modificada es VITE_* o NEXT_PUBLIC_*, activa una recompilación real en lugar de un reinicio:
lizard redeploy --service apiConsulta Tiempo de compilación vs. tiempo de ejecución y Proceso de compilación → qué activa una recompilación.
Ver también
- Variables y secretos — alcance y precedencia.
- Referencias entre servicios — sintaxis de referencia y resolución.