znajduję praktykę tworzenia osobnego węzła.pliki konfiguracyjne js do zarządzania zmiennymi konfiguracyjnymi dla różnych środowisk (development, testing, staging i production).
więc skończyłem z rozwiązaniem, które zarządza zmiennymi konfiguracyjnymi dla wszystkich środowisk za pomocą jednego węzła.plik konfiguracyjny js.
najpierw stwórzmy config.json w folderze root / config jak poniżej. Chodzi o to, że development jest domyślnym środowiskiem i zawiera wszystkie zmienne konfiguracyjne. Zmienne konfiguracyjne w innych środowiskach powtarzasz tylko wtedy, gdy chcesz nadpisać domyślne wartości zmiennych konfiguracyjnych Znalezione w domyślnym środowisku programistycznym.
jak widać, środowiska testowe, staging i produkcyjne nadpisują config_id i zmienne konfiguracyjne bazy danych. Środowiska staging i produkcyjne również nadpisują zmienną konfiguracyjną node_port.
następnie napiszmy trochę kodu, aby zaimplementować rzeczywistą logikę. Utwórz konfigurację.js w folderze root / config jak poniżej. Ten kod:
- odczytuje JSON znaleziony w root / config.plik json.
- Ustawia domyślną konfigurację na węzeł deweloperski znaleziony w konfiguracji.json.
- Ustawia konfigurację środowiska na odpowiedni węzeł środowiska znaleziony w konfiguracji.json oparty na wartości zmiennej środowiskowej NODE_ENV (która domyślnie jest rozwijana, jeśli jest null).
- Ustawia final config na połączenie konfiguracji domyślnej i środowiskowej przez wywołanie metody merge lodasha.
- Ustawia globalną zmienną gconfig z wartością finalnej konfiguracji.
- rejestruje wartość gConfig.
na koniec stwórzmy root / server.js, aby przetestować to wszystko w przeglądarce. Poniższy kod jest oczywisty. Przetestuj go, ustawiając różne wartości dla zmiennej środowiskowej NODE_ENV.
a oto kilka zrzutów ekranu z testowania przez ustawienie zmiennej środowiskowej node_env w serwerze.js do rozwoju i inscenizacji. Możesz zobaczyć, że w środowisku tymczasowym wartości dla app_name, app_desc i json_indentation nie zmieniają się i są pobierane ze środowiska programistycznego, gdzie jako wartości dla config_id, node_port i bazy danych są nadpisywane.
możesz sklonować / pobrać powyższy kod z mojego repozytorium GitHub tutaj.
jako bonus, nic nie stoi na przeszkodzie, aby włączyć sekrety, takie jak klucze API lub hasła w konfiguracji.json. Po prostu zaszyfruj go w spoczynku, zanim wyślesz go do repozytorium źródłowego, korzystając z rozwiązania szyfrującego klasy korporacyjnej, takiego jak usługa zarządzania kluczami w chmurze Google Cloud Platform (kms). I odszyfruj go przy każdym wdrożeniu za pomocą ulubionego narzędzia CI / CD.
Sprawdź mój post na blogu za pomocą usługi zarządzania kluczami w chmurze Google Cloud Platform (kms), aby zaszyfrować / odszyfrować sekrety, aby uzyskać więcej informacji.
Szczęśliwego Kodowania!