81 lines
2.3 KiB
Markdown
81 lines
2.3 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
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`).
|