La plupart du temps, je stocke la configuration de l'application de développement dans le répertoire racine du projet, comme suit:
app
|-- config.json
Mais cela ne semble pas être la meilleure approche, car cette configuration finit par être stockée dans le système de contrôle de version, ce qui peut entraîner une fuite des noms d'utilisateur, mots de passe et autres informations sensibles.
Le Guide de l’ application Factor recommande de supprimer complètement les fichiers de configuration et d’utiliser des variables d’environnement pour la configuration:
... stocke la configuration dans des variables d'environnement. Env vars sont faciles à changer d'un déploiement à l'autre sans changer de code; contrairement aux fichiers de configuration, il y a peu de chance qu'ils soient archivés accidentellement dans le dépôt de code; et contrairement aux fichiers de configuration personnalisés, ou à d'autres mécanismes de configuration tels que les propriétés système Java, ils constituent une norme indépendante du langage et du système d'exploitation.
Cela me semble très agréable, mais où stocker lesdites variables d’environnement sans les vérifier dans le contrôle de source? Et quels outils puis-je utiliser pour transmettre ces variables à l'application? Il peut y avoir des dizaines d'options de configuration, et les taper à la main chaque fois que vous lancez l'application n'est pas agréable - elles doivent donc être stockées dans un type de fichier quelque part. Ce fichier se retrouvera donc dans le contrôle de code source et nous reviendrons à l’origine.
Existe-t-il une manière universellement acceptée de gérer les options de configuration, sans risque de stocker la configuration locale dans le contrôle de source?
.gitignore
où je peux définir des fichiers ou des dossiers qui ne doivent pas être archivés dans le contrôle de version. Comme vous le dites, je ne vois pas où Env vars devrait vraiment aider, car vous avez un script pour les définir et vous devriez les stocker avec le projet ou vous les avez 'quelque part' sur votre système (répertoire de départ ou même au démarrage de la machine). scripts), ce qui semble créer beaucoup de problèmes, surtout si une configuration importante est nécessaire. Dans tous les cas, je scinderais les fichiers de configuration pour que les informations confidentielles soient placées dans des fichiers différents.