Çoğu zaman, geliştirme uygulaması config'i projenin kök dizininde saklıyorum, şöyle:
app
|-- config.json
Ancak bu en iyi yaklaşım gibi görünmüyor çünkü bu yapılandırma sürüm kontrol sisteminde depolanıyor - muhtemelen kullanıcı adlarına, şifrelere ve diğer hassas özelliklere neden oluyor.
12 Factor App kılavuzu, config dosyalarını tamamen bırakmanızı ve konfigürasyon ayarları için ortam değişkenlerini kullanmanızı önerir:
... config ortam değişkenlerinde saklanır. Env değişkenleri, kod değiştirmeden dağıtımcılar arasında kolayca değiştirilebiliyor; config dosyalarının aksine, yanlışlıkla kod deposuna girme olasılıkları çok azdır; ve özel yapılandırma dosyalarından veya Java Sistem Özellikleri gibi diğer yapılandırma mekanizmalarından farklı olarak, bunlar dil ve işletim sistemi ile ilgili bir standarttır.
Bu bana kulağa çok hoş geliyor ama biri kaynak ortamını kontrol etmeden, belirtilen ortam değişkenlerini nerede saklıyor? Ve bu değişkenleri uygulamaya aktarmak için hangi araçları kullanabilirim? Düzinelerce yapılandırma seçeneği olabilir ve uygulamayı her başlatışınızda elle yazmanız hoş değildir - bu nedenle bir yerde bir tür dosyada depolanmaları gerekir. Böylece söz konusu dosya kaynak kontrolü ile sonuçlanacak ve başladığımız yere geri döneceğiz.
Yerel konfigürasyonun kaynak kontrolünde saklanma riski olmayan evrensel olarak kabul edilmiş bir yapılandırma seçeneği var mı?
.gitignore
sürüm kontrolünde kontrol edilmemesi gereken dosya veya klasörleri tanımlayabileceğim bir şey var . Söylediğiniz gibi, Env vars'ının gerçekten nerede yardım edeceğini görmüyorum, onları ayarlamak için bir komut dosyanız var ve proje ile birlikte saklanmalı ya da sisteminizde (bir ana dizinde veya hatta makinelerin başlangıcında 'bir yere' sahip olmalısınız) senaryolar) kendi başına çok fazla problem yaratıyor gibi görünüyor, özellikle de çok fazla konfigürasyon gerekliyse. Her durumda, config bilgisini bölerek gizli bilgilerin farklı dosyalara girmesini sağlayacağım.