ほとんどの場合、次のように、プロジェクトのルートディレクトリに開発アプリケーションの構成を保存します。
app
|-- config.json
しかし、この設定はバージョン管理システムに保存され、ユーザー名、パスワード、その他の機密情報が漏洩する可能性があるため、これは最善のアプローチではないようです。
12ファクターアプリガイドでは、構成ファイルをすべて削除し、構成セットアップに環境変数を使用することをお勧めします。
...環境変数に設定を保存します。Env変数は、コードを変更せずにデプロイ間で簡単に変更できます。構成ファイルとは異なり、誤ってコードリポジトリにチェックインされる可能性はほとんどありません。また、カスタム構成ファイルやJavaシステムプロパティなどの他の構成メカニズムとは異なり、これらは言語およびOSに依存しない標準です。
それは本当にいいように思えますが、ソース変数にチェックインせずに、前述の環境変数をどこに保存しますか?そして、これらの変数をアプリに渡すためにどのツールを使用できますか?多数の設定オプションが存在する可能性があり、アプリを起動するたびに手動で入力するのは好ましくありません。したがって、それらはどこかの種類のファイルに保存する必要があります。したがって、このファイルはソース管理になり、元の場所に戻ります。
構成オプションを処理する一般的に受け入れられている方法はありますか。ソース管理にローカル構成を保存するリスクはありませんか?
.gitignore
バージョン管理にチェックインしないファイルやフォルダーを定義できるようなものがあります。あなたが言うように、Env varsが本当に役立つべき場所がわからないので、それらを設定するスクリプトがあり、プロジェクトと一緒に保存するか、システムの「どこか」(ホームディレクトリまたはマシンのスタートアップでも)にする必要がありますスクリプト)、特に多くの設定が必要な場合、それ自体で非常に多くの問題を引き起こすようです。いずれにせよ、機密情報が別のファイルに格納されるように、構成ファイルを分割します。