docker-entrypoint.sh 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/bin/sh
  2. set -e
  3. # Installer les dépendances d'abord
  4. echo "Installation des dépendances..."
  5. npm install
  6. # Définir le chemin de la base de données
  7. DB_PATH=${DB_PATH:-/app/data/framed.db}
  8. DB_DIR=$(dirname "$DB_PATH")
  9. # Créer le répertoire de la base de données s'il n'existe pas
  10. mkdir -p "$DB_DIR"
  11. # Vérifier si la base de données existe
  12. if [ ! -f "$DB_PATH" ]; then
  13. echo "Initialisation de la base de données à $DB_PATH..."
  14. # Créer le répertoire du script d'initialisation si nécessaire
  15. mkdir -p /app/scripts
  16. # Créer un script d'initialisation
  17. cat > /app/scripts/init-db.js << EOF
  18. const sqlite3 = require('sqlite3').verbose();
  19. const fs = require('fs');
  20. // Récupérer le schéma SQL
  21. const schema = fs.readFileSync('/app/schema.sql', 'utf8');
  22. // Créer la base de données
  23. const db = new sqlite3.Database('${DB_PATH}', (err) => {
  24. if (err) {
  25. console.error('Erreur lors de la création de la base de données:', err.message);
  26. process.exit(1);
  27. }
  28. console.log('Base de données créée.');
  29. // Activer les clés étrangères
  30. db.run('PRAGMA foreign_keys = ON');
  31. // Exécuter le schéma SQL
  32. db.exec(schema, (err) => {
  33. if (err) {
  34. console.error('Erreur lors de l\\'initialisation de la base de données:', err.message);
  35. process.exit(1);
  36. }
  37. console.log('Base de données initialisée avec succès.');
  38. db.close();
  39. });
  40. });
  41. EOF
  42. # Exécuter le script d'initialisation
  43. node /app/scripts/init-db.js
  44. else
  45. echo "Base de données existante détectée à $DB_PATH"
  46. fi
  47. # Mettre à jour le chemin de la DB dans le code si nécessaire
  48. if [ "$DB_PATH" != "./framed.db" ]; then
  49. echo "Mise à jour du chemin de la base de données dans le code..."
  50. sed -i "s|const db = new sqlite3.Database('./framed.db'|const db = new sqlite3.Database('$DB_PATH'|g" /app/server.js
  51. fi
  52. # Démarrer le serveur
  53. echo "Démarrage du serveur Framed Tracker..."
  54. if [ "$NODE_ENV" = "production" ]; then
  55. exec node server.js
  56. else
  57. exec nodemon --watch ./ server.js
  58. fi