VariablesSolución de problemasUn secreto o una referencia no aparece

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_* y NEXT_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_URL

Si 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 --show

Recuerda 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 api

Consulta Tiempo de compilación vs. tiempo de ejecución y Proceso de compilación → qué activa una recompilación.

Ver también