Llevo semanas peleándome con despliegues en la nube. Probé Heroku (rip free tier), Vercel (solo frontend), y al final me decidí por Railway porque promete simplicidad. Pero me encontré con varios errores tontos que no estaban en la documentación oficial. Aquí les comparto mi guía práctica para desplegar una API REST en Node.js con Docker en Railway, incluyendo variables de entorno y base de datos PostgreSQL.
Paso 1: Dockerfile minimalista
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
Paso 2: Conectar con Railway
Creé un proyecto nuevo, linkeé mi repo de GitHub, y seleccioné la rama main. En la configuración del servicio, añadí las variables de entorno (DATABASE_URL, JWT_SECRET, etc.) y luego hice deploy. ¡Fallo! El error era que mi app esperaba PORT de Railway, pero yo tenía hardcodeado el 3000. Solución: const PORT = process.env.PORT || 3000;.
Paso 3: Base de datos
Railway te permite crear un plugin de PostgreSQL. Copié la URL de conexión que te dan y la puse como variable de entorno. Pero mi app no se conectaba... resulta que necesitaba ssl: { rejectUnauthorized: false } en la conexión de Prisma. Una vez añadido, funcionó.
Resultado final: Deploy en 3 intentos. ¿Alguien más ha tenido problemas con Railway o recomiendan otra plataforma? ¡Compartan sus experiencias!