Files
moraworld/docs/COOLIFY.md
T

2.3 KiB

Despliegue en Coolify

Arquitectura recomendada

Servicio Coolify Repo / Dockerfile Puerto
moraworld-web apps/web/Dockerfile (build context: raíz del monorepo) 3000
moraworld-api apps/api/Dockerfile (build context: raíz del monorepo) 3001
PostgreSQL Servicio Coolify o externo 5432
Redis Servicio Coolify o externo 6379

Variables de entorno

API (moraworld-api)

DATABASE_URL=postgresql://USER:PASS@HOST:5432/moraworld
REDIS_URL=redis://HOST:6379
API_PORT=3001
JWT_SECRET=<generar-32-chars-minimo>
CORS_ORIGINS=https://tu-dominio.com
NODE_ENV=production

Web (moraworld-web)

NEXT_PUBLIC_API_URL=https://api.tu-dominio.com
PORT=3000
NODE_ENV=production

En build de Coolify para web, pasar NEXT_PUBLIC_API_URL como build argument si usas Dockerfile (ya declarado en apps/web/Dockerfile).

Build en Coolify

  1. Conectar repositorio Git.
  2. Crear dos aplicaciones desde el mismo repo:

Aplicación API

  • Build Pack: Dockerfile
  • Dockerfile location: apps/api/Dockerfile
  • Base directory / Context: / (raíz del monorepo)
  • Health check path: /api/health
  • Puerto expuesto: 3001

Aplicación Web

  • Build Pack: Dockerfile
  • Dockerfile location: apps/web/Dockerfile
  • Base directory / Context: /
  • Health check path: /
  • Puerto expuesto: 3000

Migraciones en producción

Ejecutar una vez (o en CI) antes/después del deploy de API:

pnpm db:generate
pnpm exec prisma migrate deploy --schema=packages/database/prisma/schema.prisma

En Coolify puedes usar un one-off command o job con imagen Node y DATABASE_URL del servicio Postgres.

Desarrollo local vs Coolify

Local Coolify
Postgres/Redis docker compose up Servicios gestionados
API pnpm --filter @moraworld/api dev Contenedor NestJS
Web pnpm --filter @moraworld/web dev Contenedor Next standalone
Dominio localhost HTTPS + dominio real

Notas

  • No subir .env al repositorio.
  • Ajustar CORS_ORIGINS con el dominio exacto del frontend.
  • Para archivos (facturas/fotos), configurar S3 o MinIO en Fase 1 (S3_* en .env.example).