Además del despliegue en Vercel, Transporte Tijuana puede ejecutarse en cualquier servidor o máquina local mediante Docker Compose. La imagen se construye con un Dockerfile multi-stage que aprovecha la opciónDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/danitocsc/transporte-unrc-web-public/llms.txt
Use this file to discover all available pages before exploring further.
output: "standalone" de Next.js para producir un contenedor mínimo y autosuficiente, sin dependencias externas.
Requisitos previos
- Docker Engine 24+ y Docker Compose v2
- El repositorio clonado localmente
Arquitectura del servicio
El archivodocker-compose.yml define un único servicio llamado web conectado a una red interna dedicada:
Propiedades del servicio web
| Propiedad | Valor | Descripción |
|---|---|---|
container_name | transporte-web | Nombre fijo del contenedor |
restart | unless-stopped | Se reinicia automáticamente salvo que se detenga de forma explícita |
NODE_ENV | production | Activa las optimizaciones de producción de Node.js y Next.js |
PORT | 3000 | Puerto en el que el servidor Node.js escucha dentro del contenedor |
HOSTNAME | 0.0.0.0 | El servidor acepta conexiones en todas las interfaces de red del contenedor |
| Red | transporte-net | Red bridge interna aislada del resto del host |
Healthcheck
Docker comprueba la salud del contenedor llamando al endpoint/api/health cada 30 segundos. Si el servidor responde con HTTP 200, el contenedor se marca como healthy; de lo contrario, Docker reintenta hasta 3 veces (timeout de 10 s por intento) antes de marcarlo como unhealthy.
Dockerfile multi-stage
ElDockerfile ubicado en web/ usa tres stages para minimizar el tamaño final de la imagen:
| Stage | Base | Responsabilidad |
|---|---|---|
deps | node:20-alpine | Instala dependencias de producción con npm ci |
builder | node:20-alpine | Ejecuta next build y genera .next/standalone |
runner | node:20-alpine | Imagen final mínima: solo los artefactos necesarios para ejecutar el servidor |
runner es la opción output: "standalone" de next.config.ts. Next.js genera un directorio .next/standalone con el servidor Node.js (server.js) y todas las dependencias copiadas de node_modules, de modo que el contenedor final no necesita instalar paquetes en tiempo de ejecución. Los archivos estáticos se copian por separado desde .next/static.
Comandos de operación
Acceso desde el host
Por defecto, eldocker-compose.yml no expone el puerto 3000 al host — el servicio solo es accesible dentro de la red transporte-net. Esto es intencionado para entornos donde un proxy inverso (por ejemplo, Nginx o Traefik) se conecta a la misma red Docker y termina las conexiones externas.
Si necesitas acceder directamente al contenedor desde el navegador de tu máquina (por ejemplo, para pruebas locales), agrega una sección Con esto,
ports al servicio web en tu docker-compose.yml:http://localhost:3000 apuntará al servidor Next.js dentro del contenedor.