Référence paas.toml
Le fichier paas.toml en détail. Toutes les sections, leurs clés, leurs valeurs par défaut, leurs effets.
Le fichier paas.toml à la racine de votre repo configure votre app de manière déclarative. Il est optionnel : la plateforme détecte les défauts raisonnables. Mais dès que vous avez plusieurs process, du scaling, ou une release task, il devient utile.
Exemple minimal
Le fichier le plus basique pour une app web. La plateforme détecte le langage automatiquement.
type = "web"
command = "gunicorn app:app --bind 0.0.0.0:$PORT"
Section [build]
Personnalise le build. Optionnelle.
buildpack = "auto" # ou "heroku/python"
include = ["src/", "Pipfile*"]
exclude = ["tests/", "*.md"]
env = { NODE_ENV = "production" }
| Clé | Description |
|---|---|
| buildpack | "auto" (détection) ou un buildpack explicite. Liste sur /docs/buildpacks. |
| include | Globs des fichiers à inclure dans le build. Par défaut tout sauf .git/ |
| exclude | Globs à exclure |
| env | Variables d'environnement disponibles uniquement pendant le build |
Section [[processes]]
Liste des process types. Au moins un web est attendu pour qu'une URL soit exposée.
type = "web"
command = "gunicorn config.wsgi:application --bind 0.0.0.0:$PORT"
[[processes]]
type = "worker"
command = "celery -A config worker --loglevel=info"
[[processes]]
type = "cron-cleanup"
command = "python manage.py cleanup"
schedule = "0 3 * * *" # 3h du matin tous les jours
| Clé | Description |
|---|---|
| type | web, worker, ou nom personnalisé pour cron |
| command | Commande à exécuter |
| schedule | Cron expression (uniquement pour les types personnalisés cron) |
| port | Port HTTP pour les process web. Défaut : $PORT injecté par la plateforme |
Section [scaling]
Configure le scaling auto par type de process. Par défaut, manuel à 1 instance.
min = 2
max = 8
target_cpu = 70 # scale up si CPU moyen > 70 %
target_rps = 200 # ou si requêtes par seconde > 200
[scaling.worker]
min = 1
max = 4
target_queue_depth = 100 # scale selon la profondeur de queue
Section [observability]
tracing = true # auto-instrumentation OpenTelemetry
sample_rate = 0.1 # 10 % des traces collectées
log_level = "info"
metrics_path = "/metrics" # endpoint Prometheus custom
Section [release]
Commande exécutée à chaque release, avant le routage du trafic. Idéal pour les migrations de base de données.
command = "python manage.py migrate --noinput"
timeout = 600 # secondes
on_failure = "rollback" # ou "abort", "warn"
Si la commande release échoue, par défaut la release est annulée et l'ancienne version reste en production. Vous pouvez changer ce comportement avec on_failure.