Środowiska konfiguracji
Plik konfiguracji konstruktora interfejsu API danych obsługuje wiele środowisk, dublując funkcjonalność ASP.NET Core .appSettings.json
Ta funkcja umożliwia korzystanie z podstawowego pliku konfiguracji wraz z plikami specyficznymi dla środowiska w celu odpowiedniego dostosowania ustawień:
dab-config.json
w przypadku konfiguracji podstawowychdab-config.Development.json
w przypadku konfiguracji specyficznych dla programowaniadab-config.Production.json
dla konfiguracji specyficznych dla środowiska produkcyjnego
Ustawianie i wybieranie środowisk
Poniżej przedstawiono najczęstsze kwestie, które należy wziąć pod uwagę podczas ustawiania lub wybierania środowisk.
- Zdefiniuj konfigurację podstawową:
dab-config.json
Zacznij od pliku, dołączając wszystkie typowe ustawienia w środowiskach. - Twórca Environment-Specific Konfiguracje: Generuj pliki, takie jak
dab-config.development.json
idab-config.production.json
dla środowisk deweloperskich i produkcyjnych, odpowiednio. Uwzględnij w tych plikach wszystkie ustawienia, które różnią się od konfiguracji podstawowej, koncentrując się na elementach, takich jakconnection-string
. - Zmienna środowiskowa: Użyj zmiennej,
DAB_ENVIRONMENT
aby określić aktywne środowisko. UstawienieDAB_ENVIRONMENT=development
lubDAB_ENVIRONMENT=production
określenie, który zestaw konfiguracji ma być stosowany. - Inicjowania: Po uruchomieniu konstruktora
dab start
interfejsu API danych z programem identyfikujeDAB_ENVIRONMENT
wartość, łączącdab-config.json
ją z odpowiednim plikiem specyficznym dla środowiska w pojedynczą scaloną konfigurację do użytku operacyjnego.
Uwaga
Konfiguracje specyficzne dla środowiska mają pierwszeństwo przed konfiguracją podstawową. Jeśli ustawienie podobne connection-string
jest określone zarówno w pliku podstawowym, jak i specyficznym dla środowiska, zostanie użyte ustawienie z pliku specyficznego dla środowiska.
Takie podejście zwiększa elastyczność i organizację w zarządzaniu konfiguracjami w wielu środowiskach, zapewniając, że ustawienia można łatwo dostosować i jasno zdefiniować dla każdego kontekstu operacyjnego.
Przykład
Aby zilustrować użycie ustawień specyficznych dla connection-string
środowiska w plikach konfiguracji konstruktora interfejsu API danych, rozważ następującą przykładową konfigurację:
Plik konfiguracji podstawowej
Plik dab-config.json
zawiera wszystkie typowe ustawienia konfiguracji, które nie różnią się między różnymi środowiskami. Może nie zawierać tego connection-string
, ponieważ różni się między środowiskami deweloperskimi i produkcyjnymi.
{
"<all-environments-feature>": {
"<property>": <value>
}
// Note: "connection-string" isn't included here as it varies by environment
}
Konfiguracja środowiska deweloperskiego
Plik dab-config.Development.json
zastępuje lub dodaje do podstawowej konfiguracji środowiska deweloperskiego, w tym parametry połączenia specyficzne dla programowania bezpośrednio w pliku.
{
"<development-specific-feature>": {
"<property>": <value>
},
"connection-string": "<development-connection-string>"
}
W tej konfiguracji programistycznej connection-string
jest on określany bezpośrednio, co jest typowym podejściem podczas opracowywania w celu uproszczenia i łatwości użycia. Zastąp <development-connection-string>
wartością rzeczywistą parametry połączenia dla bazy danych deweloperskich.
Konfiguracja środowiska produkcyjnego
dab-config.Production.json
W przypadku pliku parametry połączenia jest bezpiecznie odwoływania się za pośrednictwem zmiennej środowiskowej, aby uniknąć kodowania poufnych informacji w plikach konfiguracji.
{
"connection-string": "@env('my-connection-string')"
}
W konfiguracji @env('my-connection-string')
produkcyjnej służy do dynamicznego ładowania parametry połączenia ze zmiennej środowiskowej o nazwie my-connection-string
. Takie podejście zwiększa bezpieczeństwo dzięki zachowaniu kontroli wersji poufnych informacji i umożliwia łatwe aktualizacje bez modyfikowania wdrożonych plików konfiguracji aplikacji.
Ustawianie zmiennych środowiskowych
Efektywne zarządzanie zmiennymi środowiskowymi ma kluczowe znaczenie dla bezpiecznej i elastycznej konfiguracji konstruktora interfejsu API danych. Zmienne środowiskowe można ustawić na dwa sposoby:
Ustawienia systemu bezpośredniego: Skonfiguruj zmienne bezpośrednio w systemie operacyjnym. Ta metoda zapewnia, że zmienne są globalnie rozpoznawane w systemie, ale wymagają dostępu administracyjnego do zarządzania.
Korzystanie z elementu
.env
Plik: Aby uzyskać bardziej zlokalizowane i przyjazne dla programowania podejście, utwórz.env
plik zawierający pary klucz-wartość zmiennych środowiskowych. Umieść ten plik w tym samym katalogu co plik konfiguracji konstruktora interfejsu API danych. Ta metoda zwiększa łatwość użycia i konserwację zmiennych środowiskowych podczas opracowywania.Uwaga
Nazwa
.env
pliku, na przykład.gitignore
i.editorconfig
pliki nie mają nazwy pliku, tylko rozszerzenie pliku. Nazwa jest niewrażliwa na wielkość liter, ale konwencja jest mała.
Najlepsze rozwiązania i zabezpieczenia
Izolacja procesu: Po ustawieniu pliku
.env
lub bezpośrednio w systemie zmienne środowiskowe są ustanawiane jako zmienne procesu, chronione przed innymi procesami. Ta izolacja może zwiększyć bezpieczeństwo konfiguracji, ograniczając narażenie na poufne informacje.Wykluczenie z kontroli wersji: Aby zapobiec przypadkowemu wyciekowi wpisów tajnych, dołącz
.env
plik do projektu.gitignore
. Dzięki temu poufne informacje, takie jak parametry połączenia lub klucze interfejsu API, nie są przypadkowo zatwierdzane i wypychane do repozytoriów kontroli wersji.
Praktyczna aplikacja
.env
Plik nie tylko upraszcza zarządzanie zmiennymi środowiskowymi, ale także umożliwia dynamiczne dostosowanie ustawień bez konieczności modyfikowania konfiguracji na poziomie systemu. Na przykład:
my-connection-string="Server=tcp:127.0.0.1,1433;User ID=<username>;Password=<password>;"
ASPNETCORE_URLS="http://localhost:5000;https://localhost:5001"
DAB_ENVIRONMENT=Development
Użyj pliku, .env
aby bezproblemowo zintegrować te zmienne z konfiguracją konstruktora interfejsu @env()
API danych przy użyciu funkcji .
Uzyskiwanie dostępu do zmiennych środowiskowych
@env()
Użyj funkcji , aby uwzględnić zmienne środowiskowe w pliku konfiguracji, chroniąc poufne dane.
Przykład
{
"connection-string": "@env('my-connection-string')"
}
Funkcja może służyć do uzyskiwania @env
dostępu do zmiennych środowiskowych w pliku konfiguracji.
{
"property-name": "@env('variable-name')"
}