Flask

Flask

Déployez Flask avec gunicorn, Postgres, les migrations et des workers RQ ou Celery.

  • Détecté à partir de requirements.txt ou pyproject.toml qui liste flask.
  • Web : gunicorn sur $PORT avec app:app. Si votre application se trouve ailleurs, définissez la commande de démarrage sur votre module:callable (pour une app factory, "myapp:create_app()").
  • Version : aucune par défaut. Avec Flask-Migrate, réglez-la à flask db upgrade; avec Alembic, alembic upgrade head. Une ligne release: du Procfile est utilisée si présente.
  • Base de données : psycopg → Postgres, avec DATABASE_URL injecté.
  • Workers et cron : RQ est proposé quand c’est une dépendance. Pour Celery, ajoutez worker: celery -A myapp.celery worker à votre Procfile ou ajoutez-le dans l’onglet Workers.

Les workers sont un second processus de la même application

Flask n’a pas de convention de worker qui lui soit propre, alors Railyard applique directement la règle 12-factor : déclarez un second processus dans votre Procfile et il se met à l’échelle indépendamment de web.

web: gunicorn app:app --bind 0.0.0.0:$PORT
worker: rq worker --url $REDIS_URL

Ou ajoutez-le depuis l’onglet Workers de l’application sans toucher au dépôt, et mettez l’un ou l’autre à l’échelle depuis la CLI :

railyard scale my-app worker=2

RQ est proposé automatiquement quand c’est une dépendance; Celery n’est pas détecté automatiquement pour Flask — il n’y a pas de convention unique pour l’emplacement de l’app Celery — alors déclarez sa commande vous-même, une seule fois. Voir Workers et tâches planifiées pour le cron : soit une commande planifiée là-bas, soit un second processus worker exécutant celery -A myapp.celery beat.

Configuration et secrets

DATABASE_URL est injecté dès que psycopg/psycopg2 est une dépendance, et REDIS_URL dès qu’un client Redis (redis, rq) en est une. Tout le reste — SECRET_KEY, FLASK_ENV, feature flags — est une simple variable d’environnement sous Variables, ou définie avec railyard env:set my-app KEY=VALUE depuis la CLI, donc la même image tourne sans changement de staging jusqu’en production : la parité dev/prod, pas une branche au moment du build. Pour pointer vers une base de données ou un Redis qui tourne comme son propre service sur le canvas, référencez-le avec ${{redis.RAILYARD_PRIVATE_URL}} — résolu par environnement. Voir Variables et secrets.

Déployez-le

  • Depuis un dépôt : collez l’URL Git, ou choisissez-le dans le sélecteur une fois GitHub connecté — Railyard lit requirements.txt/pyproject.toml, remplit gunicorn et DATABASE_URL, et déploie à chaque push.
  • Depuis la CLI : railyard create my-app https://github.com/me/my-app --addons postgres,redis, ou railyard git:remote && git push railyard main depuis le dépôt.
  • En un clic : ajoutez le bouton de déploiement à votre README, ou publiez-le dans le catalogue de modèles pour que n’importe qui puisse le lancer avec ses addons et variables déjà remplis.