#!/bin/sh set -e # Installer les dépendances d'abord echo "Installation des dépendances..." npm install # Définir le chemin de la base de données DB_PATH=${DB_PATH:-/app/data/framed.db} DB_DIR=$(dirname "$DB_PATH") # Créer le répertoire de la base de données s'il n'existe pas mkdir -p "$DB_DIR" # Vérifier si la base de données existe if [ ! -f "$DB_PATH" ]; then echo "Initialisation de la base de données à $DB_PATH..." # Créer le répertoire du script d'initialisation si nécessaire mkdir -p /app/scripts # Créer un script d'initialisation cat > /app/scripts/init-db.js << EOF const sqlite3 = require('sqlite3').verbose(); const fs = require('fs'); // Récupérer le schéma SQL const schema = fs.readFileSync('/app/schema.sql', 'utf8'); // Créer la base de données const db = new sqlite3.Database('${DB_PATH}', (err) => { if (err) { console.error('Erreur lors de la création de la base de données:', err.message); process.exit(1); } console.log('Base de données créée.'); // Activer les clés étrangères db.run('PRAGMA foreign_keys = ON'); // Exécuter le schéma SQL db.exec(schema, (err) => { if (err) { console.error('Erreur lors de l\\'initialisation de la base de données:', err.message); process.exit(1); } console.log('Base de données initialisée avec succès.'); db.close(); }); }); EOF # Exécuter le script d'initialisation node /app/scripts/init-db.js else echo "Base de données existante détectée à $DB_PATH" fi # Mettre à jour le chemin de la DB dans le code si nécessaire if [ "$DB_PATH" != "./framed.db" ]; then echo "Mise à jour du chemin de la base de données dans le code..." sed -i "s|const db = new sqlite3.Database('./framed.db'|const db = new sqlite3.Database('$DB_PATH'|g" /app/server.js fi # Démarrer le serveur echo "Démarrage du serveur Framed Tracker..." if [ "$NODE_ENV" = "production" ]; then exec node server.js else exec nodemon --watch ./ server.js fi