Saltar al contenido principal

Modos de Despliegue

Floutic tiene 4 modos de despliegue que controlan el comportamiento de los servicios, emails y conectividad:

ModoArchivo DockerDBRedisEmailsDominio
Produccióndocker-compose.yml + docker-compose.prod.ymlflouticDB 0SMTP realfloutic.com
Desarrollodocker-compose.yml + docker-compose.dev.ymlflouticDB 0Mailpit (capturados)localhost
Stagingdocker-compose.coolify-staging.ymlfloutic_dev (propia)DB 0 (propio)SMTP realdev.floutic.com
Local devdocker-compose.ymlflouticDB 0SMTP reallocalhost

Modo Producción (por defecto)

Los emails se envían por SMTP real a los usuarios.

docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d

En este modo, las variables del .env se usan directamente:

VariableValor ejemplo
SMTP_HOSTmail.haorp.es
SMTP_PORT587
SMTP_USERdaniel@haorp.es
SMTP_PASSWORD(tu password)

:::danger Importante En modo producción los emails se envían de verdad. No usar para testing. :::

Modo Desarrollo (con Mailpit)

Los emails se capturan en Mailpit (un servidor SMTP de testing) y no se envían a usuarios reales. Se pueden ver en el panel web de Mailpit.

docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d

En este modo, docker-compose.dev.yml sobreescribe las variables SMTP:

VariableValor dev
SMTP_HOSTmailpit
SMTP_PORT1025
SMTP_USER(vacío)
SMTP_PASSWORD(vacío)

Ver emails capturados

Acceder al panel web de Mailpit: http://localhost:8025

Todos los emails que la app "envía" aparecen ahí sin llegar a ningún destinatario real.

Cómo funciona

El archivo docker-compose.dev.yml es un override explícito que solo se activa cuando se incluye con -f. Docker Compose no lo carga automáticamente.

docker-compose.override.yml  → ❌ Se carga automáticamente (PROBLEMA)
docker-compose.dev.yml → ✅ Solo se carga con -f explícito
info

Anteriormente existía docker-compose.override.yml que se cargaba automáticamente y capturaba todos los emails en Mailpit sin que nadie se diera cuenta. Se renombró a docker-compose.dev.yml para evitar este problema.

Cambiar entre modos

De producción a desarrollo

docker compose down
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d

De desarrollo a producción

docker compose down
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d

:::tip Verificar el modo activo

# Ver qué SMTP está usando el backend
docker compose exec backend env | grep SMTP_HOST

# SMTP_HOST=mail.haorp.es → Producción (emails reales)
# SMTP_HOST=mailpit → Desarrollo (emails capturados)

:::

Checklist antes de ir a producción

  • docker-compose.override.yml NO existe en el directorio raíz
  • docker compose exec backend env | grep SMTP_HOST muestra el SMTP real
  • EMAILS_ENABLED=True en el backend
  • Envío de email de prueba exitoso

Modo Staging

Staging se gestiona con Coolify y tiene sus propios contenedores de PostgreSQL y Redis, completamente aislados de producción.

  • Compose: docker-compose.coolify-staging.yml
  • Branch: dev (auto-deploy via webhook)
  • Protección: Basic Auth (floutic / floutic123)
  • Stripe: SIEMPRE sk_test_*

:::info Aislamiento completo Staging NO comparte PostgreSQL ni Redis con producción. Tiene sus propios contenedores en la red Docker mwgcze9lhlb5qc1syww3rfrv. Se puede detener, reiniciar o destruir sin afectar producción. :::

Variables clave de staging (configuradas en Coolify UI):

VariableValor
DATABASE_URL...@postgres:5432/floutic_dev (contenedor propio)
REDIS_URLredis://redis:6379/0 (contenedor propio)
ENVIRONMENTstaging
STRIPE_SECRET_KEYsk_test_* (SIEMPRE test)
FRONTEND_URLhttps://dev.floutic.com

Para detalles completos, ver Entorno de Staging.

Desplegar staging

El deploy es automático al hacer push a dev:

git push origin dev
# Coolify detecta el push vía webhook y despliega automáticamente

Para deploy manual desde Coolify UI: navegar a la app staging y pulsar "Deploy".

Verificar staging

# Health check
curl -sf -u floutic:floutic123 https://dev.floutic.com/api/v1/health

# Frontend accesible (con Basic Auth)
curl -sf -u floutic:floutic123 https://dev.floutic.com