Saltar al contenido principal

Variables de Entorno

Swisblade inyecta variables de entorno en tus contenedores al momento del despliegue. Hay dos tipos: auto-generadas (strings de conexion desde needs y connects_to) y variables de boveda (tu configuracion personalizada y secretos, gestionados desde el dashboard).

Variables auto-generadas

Estas se crean automaticamente en base a tu stack.json. Nunca necesitas configurarlas manualmente.

Desde needs

InfraestructuraVariableEjemplo
PostgreSQLDATABASE_URLpostgresql://proj_abc:pass@platform-postgres:5432/proj_abc
MySQLDATABASE_URLmysql://proj_abc:pass@platform-mysql:3306/proj_abc
RedisREDIS_URLredis://proj_abc:pass@platform-redis:6379/0
RedisREDIS_KEY_PREFIXproj_abc:
RabbitMQMQ_URLamqp://proj_abc:pass@platform-rabbitmq:5672/proj_abc

Desde connects_to

Servicio destinoVariableEjemplo
worker (puerto 8080)WORKER_URLhttp://worker:8080
search (puerto 9200)SEARCH_URLhttp://search:9200

El nombre de la variable se deriva del nombre del servicio en UPPER_SNAKE_CASE + _URL.

Boveda (variables definidas por el usuario)

Todas las variables de entorno definidas por el usuario se almacenan en la boveda del proyecto, gestionada desde el dashboard. Cada variable en la boveda se inyecta automaticamente en todos los servicios al momento del despliegue — no necesitas declararlas en stack.json.

Gestion de la boveda

  1. Ve a Proyecto -> Variables de Entorno
  2. Agrega variables con clave y valor
  3. Activa Secret para valores sensibles (API keys, passwords, tokens)
  4. Guarda

Plain vs Secret

PlainSecret
Almacenado comoTexto planoEncriptado con AES-256-GCM
Visible en el dashboardSiNo (oculto despues de guardar)
Se puede editarSiSolo reemplazar
Usar paraLOG_LEVEL, NODE_ENVAPI keys, passwords, tokens
tip

Marca una variable como secret si contiene datos sensibles. Una vez guardada, el valor no se puede revelar, solo reemplazar por uno nuevo.

Validacion pre-deploy con requires_env

Opcionalmente puedes declarar que variables de la boveda un servicio requiere para funcionar:

{
"api": {
"type": "app",
"requires_env": ["STRIPE_KEY", "WEBHOOK_SECRET"]
}
}

Si alguna variable listada no existe en la boveda, el deploy falla inmediatamente con un mensaje de error claro — antes de que arranque ningun contenedor. Si no declaras requires_env, el deploy procede sin verificar; las variables faltantes causaran errores en runtime.

Secretos por defecto segun tipo de servicio

Algunos tipos de infraestructura requieren passwords automaticamente. Swisblade los genera por ti, pero puedes sobreescribirlos.

Tipo de servicioSecreto auto-requeridoProposito
postgres{NAME}_PASSWORDPassword de la base de datos
mysql{NAME}_ROOT_PASSWORDPassword de root
mongo{NAME}_ROOT_PASSWORDPassword de root

Por ejemplo, un servicio llamado db de tipo postgres esperara DB_PASSWORD.

Validacion en tiempo de despliegue

Swisblade valida las variables de entorno antes de iniciar los contenedores:

  • Las variables listadas en requires_env deben existir en la boveda
  • Si falta alguna variable requerida, el despliegue falla con un mensaje listando las faltantes
  • Las variables auto-generadas (DATABASE_URL, etc.) siempre estan presentes
  • Todas las variables de la boveda se inyectan en todos los servicios, independientemente de requires_env

Variables de OpenTelemetry

Estas se inyectan automaticamente para observabilidad. No necesitas configurarlas:

VariableValor
OTEL_EXPORTER_OTLP_ENDPOINTApunta al OTel Collector de la plataforma
OTEL_SERVICE_NAME{project-slug}/{service-name}
OTEL_RESOURCE_ATTRIBUTESMetadata del despliegue