Guía de Railway: Despliegue Automático de Repositorios GitHub con Base de Datos Integrada
Railway es una plataforma de DevOps y hosting moderna que simplifica el despliegue y la gestión de aplicaciones conectadas a bases de datos. A lo largo de esta guía aprenderás paso a paso cómo conectar tu repositorio de GitHub, automatizar despliegues y configurar un servicio de base de datos integrado, todo sin abandonar la interfaz de Railway ni escribir complejas líneas de configuración manual.
1. Introducción a Railway
Railway se presenta como una solución serverless ligera: abstrae servidores, balanceadores y redes, proporcionando en su lugar proyectos, servicios y entornos. Cada vez que haces git push, Railway detecta cambios, despliega tu aplicación y actualiza el entorno en cuestión de segundos.
2. Ventajas Principales
- Despliegue continuo: Integración nativa con GitHub y GitLab.
- Servicios administrados: Bases de datos (PostgreSQL, MySQL, Redis), colas, almacenamiento de archivos.
- Variables de entorno gestionadas desde la interfaz.
- Escalabilidad automática: Ajuste de recursos según la carga.
- CLI y panel de control robustos e intuitivos.
3. Primeros Pasos
- Registro en Railway: Accede a https://railway.app y crea una cuenta.
-
Instalación de Railway CLI:
npm install -g railway -
Login en la CLI:
railway login
4. Creación de un Proyecto y Conexión a GitHub
Tras el login, crea un proyecto y conéctalo a tu repositorio de GitHub:
railway init
Would you like to connect your GitHub repository › Yes
Which repository would you like to link › user/mi-proyecto
Al confirmar, Railway instalará un GitHub Action en tu repo para ejecutar despliegues cada vez que se haga push a la rama principal (main/master).
5. Configuración de la Base de Datos Integrada
Railway facilita la provisión de servicios con un solo comando:
railway add plugin postgresql
- Railway crea una instancia de Postgres gestionada.
- Se genera automáticamente una variable de entorno llamada
DATABASE_URL. - Puedes verla tanto en el panel web como en la CLI con
railway variables list.
5.1 Variables de Entorno
| Variable | Descripción |
|---|---|
| DATABASE_URL | Cadena de conexión Postgres (ej. postgres://user:pass@host:port/db). |
| RAILWAY_ENVIRONMENT | Indica el entorno activo (production, development, preview). |
6. Automatización de Migraciones
Para garantizar la coherencia del esquema de la base de datos, integra tu sistema de migraciones en el flujo de despliegue:
- Prisma:
npx prisma migrate deploy - Rails:
bundle exec rails db:migrate - Flask-Alembic:
alembic upgrade head
Agrega estos comandos al script de despliegue en tu .github/workflows/deploy.yml:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v2
- name: Install deps
run: npm install
- name: Run migrations
run: npx prisma migrate deploy
- name: Railway deploy
run: railway up --yes
env:
RAILWAY_TOKEN: {{ secrets.RAILWAY_TOKEN }}
7. Entornos y Revisiones (Previews)
Railway crea automáticamente un preview environment por cada Pull Request. Esto te permite validar cambios en una instancia real antes de fusionar:
- Entorno de Preview: URL única por PR.
- Variables dedicadas: Aseguran aislamiento frente a producción.
- Despliegue automático: Cada push al branch de la PR actualiza el preview.
8. Planes y Costes
| Plan | Características | Precio |
|---|---|---|
| Free | 1 proyecto, 5 servicios, 5GB transfer. | Gratis |
| Hobby | 5 proyectos, 2GB RAM por servicio. | 5/mes |
| Pro | Proyectos ilimitados, escalado automático. | Desde 20/mes |
9. Buenas Prácticas
- GitIgnore: Excluye
.railwaysi almacenas configuraciones locales. - Manejo de secretos: Usa Railway Variables y GitHub Secrets para tokens.
- Revisiones frecuentes: Implementa revisiones de esquema con PRs.
- Monitorización: Habilita logs y métricas desde el panel de Railway.
10. Solución de Problemas
Error 502 Bad Gateway: Comprueba que el puerto de escucha coincide con PORT de Railway.
Conexión a la base de datos fallida: Asegúrate de que DATABASE_URL no tenga caracteres especiales sin escapar.
Rate Limits en GitHub Actions: Usa acciones oficiales y cache de dependencias para reducir solicitudes.
11. Conclusión
Railway ofrece una experiencia unificada para desplegar aplicaciones y gestionar servicios, eliminando gran parte de la complejidad tradicional. Con unos pocos comandos y configuraciones mínimas, podrás tener un pipeline de CI/CD completo con base de datos integrada, entornos de preview y escalado automático.
Leave a Reply