Framework Francfort, Allemagne
Nodion reconnaît Django à la présence de manage.py et de Django dans vos dépendances. Le buildpack Python les installe, exécute collectstatic et démarre Gunicorn sur le module WSGI de votre projet. Avec une ligne release: dans un Procfile, les migrations s'exécutent avant la mise en production de chaque nouvelle version, et l'app comme sa base de données PostgreSQL tournent à Francfort.
manage.py et Django dans vos dépendancesgunicorn <projet>.wsgi, 3 workerscollectstatic. Fixez la version de Python dans .python-version, car une plage comme requires-python = ">=3.10" sélectionne la version la plus récente. requirements.txt Django>=5.2
gunicorn
whitenoise
dj-database-url
psycopg[binary] collectstatic s'exécute pendant le build, où seules les variables marquées Build existent : la configuration doit donc pouvoir être importée sans les secrets nécessaires à l'exécution. Django ne vérifie SECRET_KEY qu'au moment où elle est utilisée. Ajoutez WhiteNoise juste après SecurityMiddleware. settings.py import os
import dj_database_url
SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY", "")
DEBUG = os.environ.get("DJANGO_DEBUG") == "1"
ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS", "").split(",")
CSRF_TRUSTED_ORIGINS = [f"https://{h}" for h in ALLOWED_HOSTS if h]
DATABASES = {"default": dj_database_url.config(conn_max_age=600)}
STATIC_ROOT = BASE_DIR / "staticfiles"
# MIDDLEWARE: "whitenoise.middleware.WhiteNoiseMiddleware"
# right after "django.middleware.security.SecurityMiddleware" ALLOWED_HOSTS : Django répondrait 400 et la release ne serait jamais mise en ligne. Placez un petit middleware en tête de MIDDLEWARE et indiquez /healthz comme chemin du health check dans les paramètres de l'app. health.py from django.http import HttpResponse
class HealthCheckMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if request.path == "/healthz":
return HttpResponse("ok")
return self.get_response(request) release: dans un Procfile s'exécute une fois par build, après le build et avant le démarrage de la nouvelle version. Si elle échoue, le déploiement s'arrête et la version en cours reste en ligne. Procfile release: python manage.py migrate --noinput DATABASE_URL au déploiement suivant. Définissez DJANGO_SECRET_KEY comme secret et DJANGO_ALLOWED_HOSTS avec le nom d'hôte de votre app et vos propres domaines, puis faites un push. worker: celery -A myproject worker au Procfile avec une ligne explicite web: gunicorn myproject.wsgi --bind 0.0.0.0:$PORT ; sans ligne web:, la première entrée du Procfile autre que release: devient la commande par défaut. Ajoutez ensuite, dans l'onglet Processes, un processus nommé worker sans port. Valkey dans la même région vous fournit REDIS_URL comme broker.web:, par exemple avec des workers Uvicorn, et faites écouter le serveur sur 0.0.0.0:$PORT.requirements.txt, poetry.lock et Pipfile.lock sont installés tels quels. Un Pipfile sans son lockfile n'installe rien.DATABASE_URL, REDIS_URL ou CLICKHOUSE_URL. release: du Procfile s'exécute à chaque nouveau build. Les apps Dockerfile, ainsi que les redéploiements ou les rollbacks vers une image antérieure, utilisent une commande de release définie sur l'app elle-même, qui prime aussi sur la ligne du Procfile. Sur les sites statiques, l'étape de release s'exécute dans une image qui ne contient que les fichiers générés par le build. Seulement si vous le demandez : ajoutez release: python manage.py migrate --noinput à un Procfile. Cette ligne s'exécute une fois par build, avant le démarrage de la nouvelle version, et un échec arrête le déploiement.
En général, le health check reçoit un 400 à cause de ALLOWED_HOSTS ou un 404 sur /. Répondez sur un chemin comme /healthz dans un middleware placé avant la vérification de l'hôte, et indiquez-le comme chemin du health check de l'app.
Oui. Avec un poetry.lock, Nodion installe Poetry et exécute poetry install --only main. Pipenv fonctionne avec un Pipfile.lock.
Dans la région EU Central, à Francfort (Allemagne). Le build, le registry, l'app et ses bases de données, volumes, buckets, logs et métriques restent dans cette région. L'API et le plan de contrôle de Nodion sont hébergés en Allemagne. Nodion GmbH a son siège à Stuttgart.
Nodion en pose les bases : Nodion GmbH a son siège à Stuttgart (Allemagne). Dans la région de Francfort, l'app, ses bases de données et ses volumes fonctionnent en Allemagne. Vous concluez le DPA (accord de traitement des données, art. 28 RGPD) par voie électronique dans le dashboard. La conformité de votre déploiement dépend aussi de la façon dont vous configurez et utilisez l'app.
Une instance d'app coûte à partir de 1 EUR par mois. La configuration présentée dans l'encadré des coûts revient à 3.50 EUR par mois : App 2 EUR, PostgreSQL 1.50 EUR. Les prix sont HT, avec une facturation à la seconde. Vous pouvez choisir des tailles plus grandes ou davantage d'instances dès que vous en avez besoin.
Oui. Chaque app reçoit un nom d'hôte par défaut avec HTTPS. Ajoutez votre propre domaine dans l'onglet Domains de l'app. Le certificat TLS est émis et renouvelé automatiquement.
Jusqu'à 15 € de crédit de bienvenue à l'inscription.
ou par e-mail
Les nouveautés du produit, sans spam. Désabonnez-vous à tout moment.
Inscription confirmée.