Docker et base de données persistantes pour Directus

Bonjour a tous !

Dans la branche Reflection du git de Directus, Maxime nous donne son docker-compose.yml ainsi que la base de données database/data.db
(directus_api_manager/example_directus_server at reflection · maxbritto/directus_api_manager · GitHub).

A la racine de mon nouveau projet, j’ai donc créé un dossier database où j’y ai placé le fichier data.db téléchargé du git, ainsi qu’un fichier docker-compose.yml contenant le code suivant :

version: '3'
services:
  directus:
    container_name: directus
    image: directus/directus:latest
    ports:
      - 1234:8055
    volumes:
      - ./directus/database:/directus/database
      - ./directus/uploads:/directus/uploads
      - ./directus/extensions:/directus/extensions
    environment:
      KEY: '255d861b-5ea1-5996-9aa3-922530ec40b1'
      SECRET: '6116487b-cda1-52c2-b5b5-c8022c45e263'

      DB_CLIENT: 'sqlite3'
      DB_FILENAME: './database/data.db'

      ADMIN_EMAIL: '[email protected]'
      ADMIN_PASSWORD: 'd1r3ctu5'

Je navigue à partir du Terminal au dossier racine de mon application et fait un docker-compose up, en omettant délibérément l’option -d pour avoir le log :

docker-compose up
[+] Running 1/0
 ⠿ Container directus  Created                                                                                                                     0.0s
Attaching to directus
directus  | [14:03:39.295] INFO: Initializing bootstrap...
directus  | [14:03:39.317] INFO: Installing Directus system tables...
directus  | [14:03:39.444] INFO: Running migrations...
directus  | [14:03:39.449] INFO: Applying Remove Collection Foreign Keys...
directus  | [14:03:39.596] INFO: Applying Remove System Relations...
directus  | [14:03:39.604] INFO: Applying Remove System Collections...
directus  | [14:03:39.615] INFO: Applying Remove System Fields...
directus  | [14:03:39.626] INFO: Applying Add Cascade System Relations...
directus  | [14:03:40.233] INFO: Applying Change Webhook URL Type...
directus  | [14:03:40.257] INFO: Applying Add Relations Sort Field...
directus  | [14:03:40.272] INFO: Applying Remove Locked Fields...
directus  | [14:03:40.300] INFO: Applying Webhooks Collections Text...
directus  | [14:03:40.321] INFO: Applying Add Refresh Interval...
directus  | [14:03:40.336] INFO: Applying Make Filesize Nullable...
directus  | [14:03:40.364] INFO: Applying Add Collections Accountability...
directus  | [14:03:40.382] INFO: Applying Remove Files Interface...
directus  | [14:03:40.390] INFO: Applying Rename Interfaces...
directus  | [14:03:40.430] INFO: Applying Restructure Relations...
directus  | [14:03:40.503] INFO: Applying Add Foreign Key Constraints...
directus  | [14:03:40.523] INFO: Applying Add System Fk Triggers...
directus  | [14:03:40.780] INFO: Applying Add Collections Icon Color...
directus  | [14:03:40.795] INFO: Applying Add Insights...
directus  | [14:03:40.832] INFO: Applying Add Deep Clone Config...
directus  | [14:03:40.858] INFO: Applying Change Filesize Bigint...
directus  | [14:03:40.891] INFO: Applying Add Conditions to Fields...
directus  | [14:03:40.908] INFO: Applying Add Default Folder...
directus  | [14:03:40.944] INFO: Applying Replace Groups...
directus  | [14:03:40.956] INFO: Applying Add Required to Fields...
directus  | [14:03:40.980] INFO: Applying Update Groups...
directus  | [14:03:40.993] INFO: Applying Change Image Metadata Structure...
directus  | [14:03:41.006] INFO: Applying Add Geometry Config...
directus  | [14:03:41.040] INFO: Applying Remove Limit Column...
directus  | [14:03:41.074] INFO: Applying Add Auth Provider...
directus  | [14:03:41.157] INFO: Applying Webhooks Collections Not Null...
directus  | [14:03:41.183] INFO: Applying Move Module Setup...
directus  | [14:03:41.228] INFO: Applying Webhooks URL Not Null...
directus  | [14:03:41.266] INFO: Applying Add Collection Organization...
directus  | [14:03:41.331] INFO: Applying Replace Fields Group...
directus  | [14:03:41.412] INFO: Applying Replace M2M Interface...
directus  | [14:03:41.425] INFO: Applying Rename Login Action...
directus  | [14:03:41.436] INFO: Applying Update Presets...
directus  | [14:03:41.480] INFO: Applying Add Auth Data...
directus  | [14:03:41.502] INFO: Applying Add Webhook Headers...
directus  | [14:03:41.526] INFO: Applying Set Unique to User Token...
directus  | [14:03:41.562] INFO: Applying Update Special Geometry...
directus  | [14:03:41.572] INFO: Applying Remove Collections Listing...
directus  | [14:03:41.609] INFO: Applying Add Notifications...
directus  | [14:03:41.652] INFO: Applying Add Shares...
directus  | [14:03:41.741] INFO: Applying Add Project Descriptor...
directus  | [14:03:41.757] INFO: Applying Remove Default Project Color...
directus  | [14:03:41.781] INFO: Applying Add Bookmark Icon and Color...
directus  | [14:03:41.803] INFO: Applying Add Translation Strings...
directus  | [14:03:41.822] INFO: Applying Rename Field Typecast Flags...
directus  | [14:03:41.833] INFO: Applying Add Field Validation...
directus  | [14:03:41.861] INFO: Applying Fix Typecast Flags...
directus  | [14:03:41.873] INFO: Applying Add Default Language...
directus  | [14:03:41.938] INFO: Applying Remove Default Value Panel Icon...
directus  | [14:03:41.968] INFO: Applying Add Flows...
directus  | [14:03:42.020] INFO: Applying Add Color to Insights Icon...
directus  | [14:03:42.035] INFO: Applying Drop Non Null From IP of Activity...
directus  | [14:03:42.068] INFO: Applying Drop Non Null From Sender of Notifications...
directus  | [14:03:42.098] INFO: Applying Rename Hook Trigger to Event...
directus  | [14:03:42.109] INFO: Applying Update Notifications Timestamp Column...
directus  | [14:03:42.140] INFO: Applying Add Custom Aspect Ratios...
directus  | [14:03:42.159] INFO: Applying Add Origin to Accountability...
directus  | [14:03:42.267] INFO: Setting up first admin role...
directus  | [14:03:42.281] INFO: Adding first admin user...
directus  | [14:03:42.367] INFO: Done
directus  | [14:03:43.818] WARN: PUBLIC_URL should be a full URL
directus  | [14:03:43.843] WARN: Spatialite isn't installed. Geometry type support will be limited.
directus  | [14:03:43.925] INFO: Server started at http://0.0.0.0:8055

Les dossers /directus/database, /directus/uploads et /directus/extensions sont bien ajoutés, ainsi que le fichier /directus/database/data.db et j’arrive bien à me connecter à l’admin de Directus en me rendant à l’adresse http://localhost:1234/ en utilisant l’email [email protected] et le mot de passe d1r3ctu5 mais la base de données est vide…

Si je crée un nouvel utilisateur, quelques tables (Collections) et que je quite Docker (docker-compose down, ou avec ^c dans le cas présent), le container est détruit, la base de données avec - ce qui est normal.

Mais si, avant de quiter, je remplace le fichier de Maxime database/data.bd par mon fichier /directus/database/data.db et que je relance mon Docker, je me retrouve toujours avec une base vide !

Comment faire pour persister la base de donnée à chaque lancement, avec pour but de la partager avec le docker-compose final ?

Peut-être un futur petit cours sur Docker, @mbritto ? :wink:

Merci d’avance,
Cédric

Hello,

Normalement les fichiers présents dans tes volumes ne sont pas modifiés par docker, as tu vérifié le contenu de ton fichier /directus/database/data.db après avoir remarqué que la base de donnée était vide ?

Tu peux essayer de retirer le premier directus de tes points de montage dans les volumes :
./directus/database:/directus/database >>> ./database:/directus/database

Merci @isanforc pour ta réponse,

En effet - Je me suis emmêlé les pinceaux entre source et destination ! :sweat_smile:

En fait, je ne peux pas lire la base de données de Maxime… peut-être à cause de la version ?

Ce n’est pas bien grave dans mon cas, je sais que mon fichier est bien monté avec les modifications que je fais et je pourrais l’inclure au besoin à mon projet.

Cedric