Utilisateur·ice·s de Kresus

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: