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
| Infraestructura | Variable | Ejemplo |
|---|---|---|
| PostgreSQL | DATABASE_URL | postgresql://proj_abc:pass@platform-postgres:5432/proj_abc |
| MySQL | DATABASE_URL | mysql://proj_abc:pass@platform-mysql:3306/proj_abc |
| Redis | REDIS_URL | redis://proj_abc:pass@platform-redis:6379/0 |
| Redis | REDIS_KEY_PREFIX | proj_abc: |
| RabbitMQ | MQ_URL | amqp://proj_abc:pass@platform-rabbitmq:5672/proj_abc |
Desde connects_to
| Servicio destino | Variable | Ejemplo |
|---|---|---|
worker (puerto 8080) | WORKER_URL | http://worker:8080 |
search (puerto 9200) | SEARCH_URL | http://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
- Ve a Proyecto -> Variables de Entorno
- Agrega variables con clave y valor
- Activa Secret para valores sensibles (API keys, passwords, tokens)
- Guarda
Plain vs Secret
| Plain | Secret | |
|---|---|---|
| Almacenado como | Texto plano | Encriptado con AES-256-GCM |
| Visible en el dashboard | Si | No (oculto despues de guardar) |
| Se puede editar | Si | Solo reemplazar |
| Usar para | LOG_LEVEL, NODE_ENV | API keys, passwords, tokens |
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 servicio | Secreto auto-requerido | Proposito |
|---|---|---|
postgres | {NAME}_PASSWORD | Password de la base de datos |
mysql | {NAME}_ROOT_PASSWORD | Password de root |
mongo | {NAME}_ROOT_PASSWORD | Password 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_envdeben 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:
| Variable | Valor |
|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT | Apunta al OTel Collector de la plataforma |
OTEL_SERVICE_NAME | {project-slug}/{service-name} |
OTEL_RESOURCE_ATTRIBUTES | Metadata del despliegue |