Aller au contenu

Application hosting

Le géoportail couvre déjà beaucoup d'usages : filtrer les données, comparer deux couches, parcourir les dates avec la barre temporelle. Mais certains indicateurs demandent plus qu'une carte : un calcul lancé à la demande, un scénario paramétré par l'utilisateur, des statistiques et des graphiques, un parcours guidé pour un public précis. Pour ces cas, la plateforme met à votre disposition un service d'hébergement d'applications : vous développez une interface sur mesure, pensée pour votre indicateur et pour ceux qui l'utilisent, et la plateforme la met en ligne à côté du géoportail.

Cette page vous accompagne de votre dépôt Git jusqu'à une application en ligne, accessible aux utilisateurs de la plateforme. AntFlow Spaces se charge du trajet : il repère votre projet, construit le conteneur à partir de votre Dockerfile et l'expose. Vous n'avez donc ni image à construire ni image à pousser - vous préparez le dépôt, la plateforme fait le reste.

Documentation de référence

La procédure complète, avec les captures d'écran, est dans le Dashboard Integration Guide d'AntFlow (Docs → How-to → Space integration) sur https://process.urbiverde.com/#/spaces.

Application ou traitement ?

Cette page ne couvre qu'un seul des deux chemins, celui d'une application interactive : votre code et un Dockerfile, pour un tableau de bord Streamlit, un Plotly Dash ou une API métier. Si ce que vous voulez exposer est une chaîne de traitement en OGC API Processes, vous n'êtes pas au bon endroit - rendez-vous sur Processing, qui passe par CWL et ne réclame aucun Dockerfile.

Checklist

Avant d'entrer dans le détail, voici ce que votre dépôt doit réunir. Ces quatre points se complètent et aucun ne rattrape l'absence d'un autre : inviter le groupe sur un dépôt sans topic ne le fera pas apparaître davantage.

  1. Le topic Spaces est ajouté au dépôt.
  2. Le groupe urbiverde-if-pathfinder est invité en Maintainer (dépôts privés ou internes).
  3. Un Dockerfile valide à la racine du dépôt.
  4. La référence Git à déployer est choisie (branche, tag ou commit).

Les variables CI/CD restent facultatives, mais vous en aurez besoin dès que votre application manipule un secret, ou qu'elle écoute sur un autre port que celui attendu par défaut - c'est le rôle de CONTAINER_PORT, décrit plus bas.

1. Déclarer le projet par son topic

AntFlow Spaces ne parcourt pas tout GitLab : il s'appuie sur les topics pour savoir quels projets le concernent, et liste automatiquement ceux qui portent le topic Spaces. Tant que ce topic est absent, le dépôt reste invisible dans l'interface, même parfaitement configuré par ailleurs. Vous l'ajoutez ici :

Settings → General → Topics

Nom du topic

Le topic attendu dépend de l'instance, il ne sert donc à rien de le deviner. Celui à utiliser est affiché dans la documentation AntFlow de https://process.urbiverde.com/#/spaces.

Rien ne vous empêche d'en ajouter d'autres à côté : ils deviennent des filtres dans l'interface, pratiques pour regrouper vos applications par thème ou par équipe.

2. Donner l'accès à la plateforme

Si votre dépôt est privé ou interne, AntFlow ne peut pas en lire le contenu sans y avoir été autorisé. Vous lui ouvrez la porte en invitant le groupe en Maintainer :

Manage → Members → Invite a group → urbiverde-if-pathfinder → rôle Maintainer.

C'est exactement l'invitation que vous avez peut-être déjà faite pour la registry ; si c'est le cas, il n'y a rien à refaire.

Rôle insuffisant

Reporter et Developer peuvent sembler suffisants puisqu'ils donnent accès au code, mais ils ne conviennent pas ici : l'invitation est bien enregistrée et le dépôt reste pourtant inaccessible à la plateforme.

3. Fournir un Dockerfile

C'est le Dockerfile qui décrit comment votre application se construit et se lance, et il doit se trouver à la racine du dépôt - c'est le seul endroit où AntFlow le cherche. Une fois qu'il l'a détecté, il construit l'image et expose le conteneur sur le réseau, ce qui vous épargne tout build et tout push manuel.

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8501
CMD ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]

Écouter sur 0.0.0.0

Notez l'adresse d'écoute dans la dernière ligne. Une application qui n'écoute que sur 127.0.0.1 se construit sans erreur et se déploie sans avertissement : le problème n'apparaît qu'au moment d'ouvrir l'application, qui reste injoignable depuis l'extérieur du conteneur.

4. Choisir la version déployée

Reste à dire quelle version de votre code doit tourner. Le déploiement s'appuie sur une référence Git, qui peut être une branche, un tag ou un commit. Le choix n'est pas neutre : un tag fige le déploiement et vous garantit de pouvoir reproduire exactement ce qui est en ligne, tandis qu'une branche suit les évolutions et vous évite de redéclarer une version à chaque correctif.

Variables d'environnement

Votre application a sans doute besoin de quelques valeurs qui n'ont pas leur place dans le code : une clé d'API, un identifiant de service, une URL d'environnement. Ces variables sont gérées par GitLab et récupérées automatiquement par AntFlow, vous n'avez donc qu'à les déclarer :

Settings → CI/CD → Variables

L'intérêt par rapport à un Dockerfile est double : vos secrets ne se retrouvent ni dans l'historique du dépôt ni dans l'image publiée, et vous pouvez les changer sans toucher au code.

CONTAINER_PORT

AntFlow Spaces mappe le service sur le port 8501 par défaut, ce qui tombe bien pour une application Streamlit et beaucoup moins pour le reste. Si votre conteneur écoute ailleurs, déclarez CONTAINER_PORT en variable CI/CD avec la bonne valeur, sans quoi l'application sera déployée mais personne ne pourra l'atteindre.

Application Port typique CONTAINER_PORT
Streamlit 8501 inutile, c'est le défaut
Plotly Dash 8050 8050
FastAPI / Uvicorn 8000 8000

Accéder aux données depuis l'application

Votre application lit les données de la plateforme directement sur S3, avec les mêmes outils que dans Stocker mes données. Passez-lui ses identifiants par variables d'environnement, jamais dans le code. Pour afficher des rasters, utilisez TiTiler.

Dépannage

Si le résultat n'est pas celui attendu, le symptôme suffit en général à désigner l'étape à reprendre.

Symptôme Cause probable
Le projet n'apparaît pas dans Spaces Le topic Spaces manque (Settings → General → Topics)
Dépôt privé inaccessible Le groupe n'est pas invité, ou son rôle est inférieur à Maintainer
Application non déployée Aucun Dockerfile valide à la racine du dépôt
Application déployée mais injoignable CONTAINER_PORT ne correspond pas au port écouté, ou l'application écoute sur 127.0.0.1