Fly.io es una excelente opción para desplegar y probar tus proyectos hechos con Ruby on Rails. Te dejo los comandos esenciales para hacerte la vida mas fácil trabajando en este entorno.
Instalación
En MacOS
brew install flyctl
En Linux
curl -L https://fly.io/install.sh | sh
Autenticación
Registrarse (Si no tienes cuenta)
fly auth signup
Ingresar
fly auth login
Despliegue
Inicializar el Proyecto en Fly.io
El primer paso es inicializar tu proyecto en Fly.io. Este comando configurará tu aplicación y creará los archivos necesarios.
fly launch
Desplegar la Aplicación
Una vez que tu aplicación esté configurada y lista para ser desplegada, utiliza:
fly deploy
Dominios
Para poder conectar nuestro dominio debemos haber adquirido alguno y tener acceso a la edición los registros DNS. Luego vamos a ejecutar algunos comandos usando el CLI de Fly.io
Listar Direcciones IP
Después de desplegar la aplicación, es esencial listar las direcciones IP asignadas a tu aplicación. Esto es necesario para añadir las IPs a los registros DNS de tu administrador de dominios.
Después de desplegar la aplicación, es esencial listar las direcciones IP asignadas a tu aplicación. Esto es necesario para añadir las IPs a los registros DNS de tu administrador de dominios.
fly ips list
Salida esperada:
VERSION IP TYPE REGION CREATED AT v6 <tuipv6> public (dedicated) global Jun 3 2024 15:55 v4 <tuipv4> public (shared) Jan 1 0001 00:00
Añadir IPs a los Registros DNS
Usa las IPs listadas (IPv4 e IPv6) para actualizar los registros DNS en tu administrador de dominios. Para la IPv4 se usa un registro A apuntando a @ o un subdominio si lo prefieres y para la IPv6 se usa un registro AAAA.
Configurar el Dominio en `production.rb`
En el archivo `config/environments/production.rb` de tu proyecto Rails, añade tu dominio:
config.hosts << "yourdomain.com"
Añadir Certificado SSL
Después de actualizar los registros DNS y configurar el dominio, añade un certificado SSL para tu dominio.
fly certs add yourdomain.com
Base de Datos
Acceder a la Consola de Rails
Para acceder a la consola de Rails en tu aplicación desplegada, utiliza:
Para acceder a la consola de Rails en tu aplicación desplegada, utiliza:
fly ssh console --pty -C "/rails/bin/rails console"
Ejecutar `db:seed`
Si necesitas ejecutar las semillas de la base de datos, usa:
fly ssh console --pty -C "/rails/bin/rails db:seed"
Conectarse a una base de datos existente en fly.io
## Entra a la consola de la aplicación que ya esta ## conectada a una base de datos fly fly ssh console -a santiago ## Obtén tus credenciales env ## Toma DATABASE_URL y setealo con el siguiente ## comando en la nueva app fly secrets set DATABASE_URL=<DATABASE_URL>
Regiones
En algunos casos, es necesario desplegar tu aplicación en regiones específicas o administrar múltiples instancias de máquinas y bases de datos en Fly.io. A continuación, te detallo los comandos esenciales para trabajar con instancias y bases de datos en Fly.io.
Instancias
Crear una máquina en una zona específica
fly scale count 1 --region region -a nombredetuapp
Listar máquinas existentes
fly machines list -a nombredetuapp
Detener una máquina específica
fly machines stop <id> -a nombredetuapp
Destruir una máquina específica
fly machines destroy <id> -a nombredetuapp
Bases de Datos en Fly.io
Listar máquinas de la base de datos
fly machines list -a nombredetudb
Clonar la base de datos en una nueva región. IMPORTANTE: haz este proceso al menos dos veces para que funcione el failover
fly machines clone <id> --region region -a nombredetudb
Promover una réplica a primaria
flyctl postgres failover -a nombredetudb --allow-secondary-region
Detener máquinas de la base de datos, puedes detener la antigua y la replica innecesaria.
fly machines stop <id> -a nombredetudb
Destruir máquinas detenidas
fly machines destroy <id> -a nombredetudb
Extender Volumen
Listar volúmenes
fly volumes list -a nombredetudb
Listar máquinas de la base de datos
fly machines list -a nombredetudb
Detener la base de datos
fly machines stop <id> -a nombredetudb
Extender el volumen, por ejemplo 5 GB
fly volumes extend <volume_id> --size 5 -a nombredetudb
Iniciar la base de datos
fly machines start <id> -a nombredetudb
Eliminar volúmenes no utilizados
fly volumes delete <id> -a nombredetudb
Con estos comandos, podrás gestionar fácilmente las instancias, bases de datos y volúmenes en Fly.io para tus proyectos de Ruby on Rails. Espero que esta guía te sea útil para tus despliegues.