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.
- Le topic Spaces est ajouté au dépôt.
- Le groupe urbiverde-if-pathfinder est invité en Maintainer (dépôts privés ou internes).
- Un
Dockerfilevalide à la racine du dépôt. - 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 |