Nouvelle version docker

Bonjour, depuis la dernière version dispo sur le hub docker, impossible de démarrer kresus via docker.

Voci l’erreur que j’obtiens :

[ENTRYPOINT] Running kresus as user.
[2020-04-18T13:19:03.855] [ERROR] apply-config - Unknown database type null.
/home/user/app/node_modules/kresus/build/server/config.js:18
    throw new Error(msg);
    ^

Error: Unknown database type null.
    at crash (/home/user/app/node_modules/kresus/build/server/config.js:18:11)
    at cleanupAction (/home/user/app/node_modules/kresus/build/server/config.js:344:21)
    at processOption (/home/user/app/node_modules/kresus/build/server/config.js:511:17)
    at Object.apply (/home/user/app/node_modules/kresus/build/server/config.js:590:9)
    at Object.<anonymous> (/home/user/app/node_modules/kresus/bin/kresus.js:196:14)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
[ENTRYPOINT] Starting with UID : 0
usermod: no changes

Du coup il redémarre en boucle. J’ai rajouter une entrée [db] avec comme type sqlite mais ça ne semble pas être pris en compte.

Auriez-vous une idée ?

Merci

J’ai rajouter ces paramètres :

	-e KRESUS_DB_TYPE=sqlite \
	-e KRESUS_DB_SQLITE_PATH=/home/user/data/kresus.db \

Par contre sqlite3 n’est pas installer dans l’image :

[2020-04-22T12:38:02.563] [ERROR] init - Error at initialization:
Message: SQLite package has not been found installed. Try to install it: npm install sqlite3 --save
DriverPackageNotInstalledError: SQLite package has not been found installed. Try to install it: npm install sqlite3 --save
    at new DriverPackageNotInstalledError (/home/user/app/node_modules/kresus/node_modules/typeorm/error/DriverPackageNotInstalledError.js:10:28)
    at SqliteDriver.loadDependencies (/home/user/app/node_modules/kresus/node_modules/typeorm/driver/sqlite/SqliteDriver.js:120:19)
    at new SqliteDriver (/home/user/app/node_modules/kresus/node_modules/typeorm/driver/sqlite/SqliteDriver.js:26:15)
    at DriverFactory.create (/home/user/app/node_modules/kresus/node_modules/typeorm/driver/DriverFactory.js:41:24)
    at new Connection (/home/user/app/node_modules/kresus/node_modules/typeorm/connection/Connection.js:53:59)
    at ConnectionManager.create (/home/user/app/node_modules/kresus/node_modules/typeorm/connection/ConnectionManager.js:56:26)
    at Object.<anonymous> (/home/user/app/node_modules/kresus/node_modules/typeorm/index.js:206:66)
    at step (/home/user/app/node_modules/kresus/node_modules/tslib/tslib.js:139:27)
    at Object.next (/home/user/app/node_modules/kresus/node_modules/tslib/tslib.js:120:57)
    at /home/user/app/node_modules/kresus/node_modules/tslib/tslib.js:113:75

Un petit docker exec -it kresus /bin/bash puis npm install sqlite3 --save semble avoir réglé le problème mais lorsque je vais faire un update de l’image, sqlite3 risque de dégager.

Bonjour @nomis,

Sqlite supporte mal les migrations ; par ex. lors de l’ajout d’une colonne à une table, la table est effacée et recréée, et par conséquent tous les comptes et opérations sont supprimées en cascade.

Pour cette raison nous ne supportons sqlite que pour le dev et préconisons l’usage de postgresql.
C’est pourquoi l’image stable docker n’embarque pas sqlite : nous nous attendons à ce que postgresql soit utilisé.

Bonne journée

Très bien, je vais donc migrer vers postgresql.
C’était surtout pour que la montée de version sous docker fonctionne temporairement :slight_smile:
Merci.

Salut @nomis

En effet sqlite n’est pas supporté ; n’hésite pas à nous dire si tu rencontres de nouveaux soucis avec Postgresql, que l’on marque le message comme résolu :slight_smile:

Bonne journée,
Benjamin

Effectivement c’est tout bon après un passage sur postgesql. Merci

1 « J'aime »

Bonjour,
Je rencontre le même problème en venant de la version 0.15.2. J’ai lu dans la documentation que la migration vers la nouvelle base de données devrait être transparente (https://kresus.org/admin.html#depuis-la-version-015-vers-la-016) et donc tenté une migration sans modifier la configuration.
Y a il une information qui m’a échappée ?
Y a t’il des consignes spécifiques pour passer de la version 0.15.2 à la version 0.16.0 sur docker SVP ?

Pour ma part, j’avais déjà une base postgres disponible.
J’ai donc créé un utilisateur et la base associée.
J’ai ensuite recréé un container avec les paramètres postgres :

	-e KRESUS_DB_TYPE=postgres \
	-e KRESUS_DB_HOST=xxx.xxx.xxx.xxx \
	-e KRESUS_DB_PORT=5432 \
	-e KRESUS_DB_USERNAME=kresus \
	-e KRESUS_DB_PASSWORD=password \
	-e KRESUS_DB_NAME=kresus \

Au démarrage du container, il a migré tout seul comme un grand :slight_smile:

1 « J'aime »

OK merci beaucoup Nomis pour ta reponse rapide :slight_smile:

Bonsoir a tous,
Je suis dans la même situation que vous…
J’ ai installé l’image docker de kresus et celui ci tourne en boucle au démarage avec ce message d’erreur :

[2020-10-21T21:32:29.472] [ERROR] apply-config - Unknown database type null.
/home/user/app/node_modules/kresus/build/server/config.js:18
throw new Error(msg);
^
Error: Unknown database type null.
at crash (/home/user/app/node_modules/kresus/build/server/config.js:18:11)
at cleanupAction (/home/user/app/node_modules/kresus/build/server/config.js:344:21)
at processOption (/home/user/app/node_modules/kresus/build/server/config.js:511:17)
at Object.apply (/home/user/app/node_modules/kresus/build/server/config.js:590:9)
at Object. (/home/user/app/node_modules/kresus/bin/kresus.js:196:14)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions…js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)

je ne suis pas sur d’avoir bien compris en lisant les post précedents ce qu’il convient de faire.

Dois-je installer un serveur de DB postgres dans un conteneur dédié et y créer un DB pour kresus ?
Ou dois-je ajouter les variables d’environement que nomis à donné dans le container de kresus ?

Merci de votre aide

Auber

Bonjour @auber,

oui c’est bien ça, tu as besoin d’une base de données Postgresql qui tourne, et fournir ses infos (credentials, host, port) soit dans le fichier config soit dans les variables d’environnement.

Pour le conteneur dédié, c’est toi qui vois (ça peut aussi tourner sur l’hôte directement par ex.) ! Sinon le docker-compose doit se charger de mettre tout ça en place directement pour toi de mémoire.