Die meiste Zeit speichere ich die Konfiguration der Entwicklungsanwendung wie folgt im Stammverzeichnis des Projekts:
app
|-- config.json
Dies scheint jedoch nicht der beste Ansatz zu sein, da diese Konfiguration letztendlich im Versionskontrollsystem gespeichert wird - was möglicherweise zu einem Verlust von Benutzernamen, Passwörtern und anderen sensiblen Inhalten führt.
Im 12 Factor App- Handbuch wird empfohlen, die Konfigurationsdateien vollständig zu löschen und Umgebungsvariablen für die Konfiguration zu verwenden:
... speichert die Konfiguration in Umgebungsvariablen. Env-Vars können zwischen Bereitstellungen problemlos geändert werden, ohne dass Code geändert werden muss. Im Gegensatz zu Konfigurationsdateien besteht nur eine geringe Wahrscheinlichkeit, dass sie versehentlich in das Code-Repo eingecheckt werden. Im Gegensatz zu benutzerdefinierten Konfigurationsdateien oder anderen Konfigurationsmechanismen wie Java-Systemeigenschaften sind sie ein sprach- und betriebssystemunabhängiger Standard.
Das hört sich für mich wirklich gut an, aber wo speichert man die Umgebungsvariablen, ohne sie in die Quellcodeverwaltung einzuchecken? Und mit welchen Tools kann ich diese Variablen an die App übergeben? Es kann Dutzende von Konfigurationsoptionen geben, und es ist nicht schön, sie bei jedem Start der App von Hand einzugeben - sie müssen also irgendwo in einer Datei gespeichert werden. Die Datei wird somit in der Quellcodeverwaltung enden und wir kehren zu dem Punkt zurück, an dem wir begonnen haben.
Gibt es eine allgemein akzeptierte Möglichkeit, mit Konfigurationsoptionen umzugehen, die nicht das Risiko birgt, lokale Konfigurationen in der Quellcodeverwaltung zu speichern?
.gitignore
wo ich Dateien oder Ordner definieren kann, die nicht in die Versionskontrolle eingecheckt werden sollen. Wie Sie sagen, sehe ich nicht, wo Env-Vars wirklich helfen sollten, z. B. haben Sie ein Skript, um sie festzulegen, und sollten zusammen mit dem Projekt gespeichert werden, oder Sie haben sie "irgendwo" auf Ihrem System (Basisverzeichnis oder sogar beim Starten des Computers) Skripte), die für sich genommen eine Menge Probleme aufwerfen, insbesondere wenn eine Menge Konfiguration erforderlich ist. In jedem Fall würde ich die Konfigurationsdateien so aufteilen, dass vertrauliche Informationen in verschiedenen Dateien gespeichert werden.