Saltar a contenido

Fly.io

A continuación se describen algunas configuraciones para el despliegue de Callisto sobre Fly.io.

Instalar flyctl

flyctl es una utilidad de línea de comandos que te permite trabajar con Fly.io, desde crear tu cuenta hasta desplegar tus aplicaciones. Se ejecuta en tu dispositivo local, por lo que deberás instalar la versión adecuada para tu sistema operativo.

para Gnu/Linux y macOS

curl -L https://fly.io/install.sh | sh

y seguir las instrucciones...

Si ya tienes una cuenta en Fly.io, todo lo que tienes que hacer es iniciar sesión con flyctl. Para iniciar sesión, ejecuta:

flyctl auth login

Configuración inicial

Una aplicación de Python en Fly.io se configura mediante un archivo fly.toml que contiene la configuración de compilaciones, variables de entorno, servicios expuestos a internet, montajes de disco y otros ajustes generales.

Te exponemos la configuración del archivo fly.toml utilizado en Callisto.

define un archivo de nombre fly.toml en la raiz del proyecto.

# fly.toml

app = "callisto"
primary_region = "gru"

kill_signal = "SIGINT" #"SIGTERM"
kill_timeout = 20

[build]
  # Recomendado
  # comentar este apartado para usar la opcion por Dockerfile
  # builder = "paketobuildpacks/builder:base"
  # buildpacks = ["gcr.io/paketo-buildpacks/python"]


[http_service]
  internal_port = 8080
  force_https = true
  auto_stop_machines = true
  auto_start_machines = true
  min_machines_running = 0
  processes = ["app"]
  [http_service.concurrency]
    type = "requests"
    soft_limit = 80
    hard_limit = 120


[checks]
  [checks.readiness_check]
    grace_period = "30s"
    interval = "14400s" # 4 hours
    method = "get"
    path = "/api/readiness_check"
    port = 8080
    timeout = "5s"
    type = "http"
    [checks.readiness_check.headers]
      Content-Type = "application/json"
      Accept-Encoding = "gzip, deflate"
  [checks.liveness_check]
    grace_period = "30s"
    interval = "14400s" # 4 hours
    method = "get"
    path = "/api/liveness_check"
    port = 8080
    timeout = "5s"
    type = "http"
    [checks.liveness_check.headers]
      Content-Type = "application/json"
      Accept-Encoding = "gzip, deflate"


[env]
  PORT = "8080"
  MY_SPECIAL_ENV = "some_value"

Importante

Se recomienda definir variables de entorno para información no sensible, para información confidencial, como credenciales o contraseñas, utilice los secretos.

Procfiles

Los Procfiles se usan en otras plataformas para desplegar aplicaciones Python así que lo mantendremos simple.

El Procfile contiene instrucciones para iniciar la aplicación. este archivo inicia el servidor uvicorn con nuestra aplicación ASGI:

Nota

Este archivo puede que no sea necesario definirlo, gracias a que tienes un archivo Dockerfile.

define un archivo de nombre Procfile en la raiz del proyecto.

1
2
3
4
# Modify this Procfile to fit your needs
# web: gunicorn app:app

uvicorn main:fastapp --host 0.0.0.0 --port 8080

Especificando un tiempo de ejecución de Python

Es posible que necesites especificar una versión de Python ó si quieres bloquear tu proyecto contra actualizaciones de parches hasta que estés listo para actualizar, puedes especificar qué tiempo de ejecución usar para tu aplicación.

Nota

Este archivo puede que no sea necesario definirlo, gracias a que tienes un archivo Dockerfile.

define un archivo de nombre runtime.txt en la raiz del proyecto.

python-3.11.6

Despliegue

El siguiente comando construye su Fly App y la pone en marcha en una o más Fly Machines, aplicando la configuración especificada en el archivo local fly.toml.

fly deploy

Más información

Para más información consulta: