Migration Directus CLI vers Docker

Bonjour à tous,

Je reprends un projet entamé il y a 2 ans composé d’une appli mobile (Flutter) et d’un WS Directus.
Au démarrage du projet j’avais suivi le cours Directus pour l’installation et avait donc fait ca directement sur serveur avec la CLI.

Mon souci c’est que Directus a déprécié cette manière d’installer et je voudrais donc passer à Docker. Seulement, il y a deux ans sur mon serveur, j’avais quand même un peu travaillé et je voudrais récupérer toutes mes configs (schéma, droits etc …) pour les intégrer dans une image basée sur la dernière version de directus. Et là problème, je suis paumé.

Est ce que l’un d’entre vous aurais déja fait ce genre de manipulation ?
Même le serveur est en version outdated je voudrais faire un coup de propre, supprimer le serveur, en remonter un propre avec docker et y pousser gentiment ma nouvelle image. Avec docker compose, ca parait pas sorcier mais quand il s’agit d’y intégrer une conf plus ancienne c’est plus dur.

Merci par avance !
Mathis

Bonjour Mathis,

J’ai eu un cas similaire et ma solution a été d’exporter la base de donnée afin de récupérer toutes les anciennes configs, droits, et données de l’ancien directus.
Ensuite dans le compose du nouveau docker j’ai pu ajouter le lien vers le dump de l’ancienne base de donnée afin que directus récupère les données de cette dernière.

J’espère avoir bien compris ton problème
Bonne journée

1 « J'aime »

Bonjour @aporquet ,

Merci pour ton retour, je vais tenter ca !

Bonne journée

Bon mon schéma n’est plus compatible avec les dernières versions de Directus, je crois que je vais me faire mon WS à la main, j’irai plus vite, je m’amuserai plus, et au moins, pas de dépendance ! Merci quand même

Hello,

Ne peux-tu pas installer une version de Directus équivalente à celle que tu as sur ton serveur? Puis ensuite la mettre à jour une fois que les données/droits/etc. ont été correctement copiés ?

++

J’ai essayé de faire ca puis de mettre à jour mon schéma mais j’ai des crashs avec des erreurs node à chaque fois différentes. Avec Spring Boot je m’embêterais moins :slight_smile:

1 « J'aime »

Normalement tu dois pouvoir créer un nouveau serveur directus avec l’image docker qui correspond à la version que tu as sur ton serveur.
Une fois que cette image docker sera fonctionnelle et parviendra à se lancer, tu pourras :

  • arrêter le service directus en conservant le service base de données lancé
  • remplacer la base de donnée par celle de ton serveur distant (export/import sql)
  • relancer le service directus qui devrait fonctionner de la même manière que sur ton serveur
  • mettre à jour la version de directus sur ton image docker et le relancer
  • en théorie directus fera les mises à jour nécessaires de la base de données pour la rendre compatible avec la nouvelle version

Je dis « en théorie » car 2 ans de mises à jour en un coup, la probabilité pour que ça se passe sans encombre est plutôt faible.

L’autre solution :
tu repars sur un directus tout neuf, et tu importes seulement les tables de données de ton serveur de départ (celles dont le nom ne commence pas par directus_).
Si tu as des utilisateurs à importer, tu peux peut vérifier si la table directus_user n’a pas changé de format depuis pour importer celle-ci aussi. Si elle n’est pas compatible, tu peux tenter l’import CSV depuis l’admin panel de directus.
Directus devrait découvrir les tables et tu auras « seulement » les droits à assigner correctement avec le nouveau système.

Merci pour cette réponse @mbritto, connaissant bien spring boot et ayant l’habitude de faire des web services, j’ai mais moins de deux jours à redévelopper mon web services moi même. Donc au final j’ai quelques chose de super adapté à mon besoin, avec certes moins de fonctionnalités, mais au final je me suis recentré sur l’essentiel et je n’ai plus de dépendance avec directus :slightly_smiling_face:
Reste à reprendre l’appli pour adapter mes appels aux APIs mais ça sera l’occasion de faire un coup de propre !