Udostępnij za pośrednictwem


Samouczek: wdrażanie aplikacji internetowej Node.js i bazy danych MongoDB na platformie Azure

Usługa Azure App Service oferuje wysoce skalowalną, samonastosową usługę hostingu internetowego przy użyciu systemu operacyjnego Linux. W tym samouczku pokazano, jak utworzyć bezpieczną aplikację Node.js w usłudze Azure App Service połączoną z bazą danych Azure Cosmos DB for MongoDB . Po zakończeniu będziesz mieć aplikację Express.js działającą w usłudze Azure App Service na systemie Linux.

Zrzut ekranu przedstawiający aplikację Node.js przechowującą dane w usłudze Cosmos DB.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Utwórz architekturę domyślnie bezpieczną dla usługi Azure App Service i usługi Azure Cosmos DB z użyciem interfejsu API MongoDB.
  • Zabezpieczanie tajemnic połączenia przy użyciu tożsamości zarządzanej i odwołań do Key Vault.
  • Wdróż przykładową aplikację Node.js w usłudze App Service z repozytorium GitHub.
  • Uzyskaj dostęp do ustawień aplikacji usługi App Service w kodzie aplikacji.
  • Wprowadź aktualizacje i ponownie wdróż kod aplikacji.
  • Przesyłanie strumieniowe dzienników diagnostycznych z usługi App Service.
  • Zarządzanie aplikacją w witrynie Azure Portal.
  • Aprowizuj tę samą architekturę i wdróż przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure.
  • Zoptymalizuj przepływ pracy programowania za pomocą usług GitHub Codespaces i GitHub Copilot.

Wymagania wstępne

Przejdź do końca

Przykładową aplikację można szybko wdrożyć w tym samouczku i zobaczyć, jak działa na platformie Azure. Uruchom następujące polecenia w usłudze Azure Cloud Shell i postępuj zgodnie z monitem:

mkdir msdocs-nodejs-mongodb-azure-sample-app
cd msdocs-nodejs-mongodb-azure-sample-app
azd init --template msdocs-nodejs-mongodb-azure-sample-app
azd up

1. Uruchamianie przykładu

Najpierw należy skonfigurować przykładową aplikację opartą na danych jako punkt wyjścia. Dla wygody przykładowe repozytorium zawiera konfigurację kontenera deweloperskiego . Kontener deweloperski ma wszystko, czego potrzebujesz, aby opracować aplikację, w tym bazę danych, pamięć podręczną i wszystkie zmienne środowiskowe wymagane przez przykładową aplikację. Kontener deweloperski może działać w usłudze GitHub codespace, co oznacza, że można uruchomić przykład na dowolnym komputerze z przeglądarką internetową.

Krok 1: W nowym oknie przeglądarki:

  1. Zaloguj się na istniejącym koncie GitHub.
  2. Przejdź do https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app/fork.
  3. Usuń zaznaczenie pola Kopiuj tylko gałąź główną. Chcesz, aby wszystkie gałęzie.
  4. Wybierz Utwórz fork.

Krok 2. W forku GitHub:

  1. Wybierz main>starter-no-infra dla gałęzi początkowej. Ta gałąź zawiera tylko przykładowy projekt i brak plików ani konfiguracji związanych z platformą Azure.
  2. Wybierz pozycję Code>Create codespace on starter-no-infra (Utwórz przestrzeń kodu w infrastrukturze starter-no-infra). Skonfigurowanie przestrzeni kodu zajmuje kilka minut.

Krok 3: W terminalu usługi Codespace:

  1. Uruchom program npm install && npm start.
  2. Po wyświetleniu powiadomienia Your application running on port 3000 is available.wybierz pozycję Otwórz w przeglądarce. Przykładowa aplikacja powinna być widoczna na nowej karcie przeglądarki. Aby zatrzymać aplikację Express.js, wpisz Ctrl+C.

Napiwek

Możesz zapytać narzędzie GitHub Copilot o to repozytorium. Na przykład:

  • @workspace Co robi ten projekt?
  • @workspace Co robi folder .devcontainer?

Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.

2. Tworzenie usług App Service i Azure Cosmos DB

W tym kroku utworzysz zasoby platformy Azure. Kroki używane w tym samouczku umożliwiają utworzenie zestawu bezpiecznych domyślnie zasobów obejmujących usługę App Service i usługę Azure Cosmos DB dla bazy danych MongoDB. W procesie tworzenia określisz następujące elementy:

  • Nazwa aplikacji internetowej. Jest ona używana jako część nazwy DNS dla aplikacji.
  • Region, w którym aplikacja będzie uruchamiana fizycznie na świecie. Jest ona również używana jako część nazwy DNS aplikacji.
  • Stos środowiska uruchomieniowego dla aplikacji. W tym miejscu wybierasz wersję środowiska Node, która ma być używana dla aplikacji.
  • Plan hostingu aplikacji. Jest to warstwa cenowa obejmująca zestaw funkcji i pojemność skalowania aplikacji.
  • Grupa zasobów dla aplikacji. Grupa zasobów umożliwia grupowanie (w kontenerze logicznym) wszystkich zasobów platformy Azure potrzebnych dla aplikacji.

Zaloguj się do witryny Azure Portal i wykonaj następujące kroki, aby utworzyć zasoby usługi Azure App Service.

Krok 1: W witrynie Azure Portal:

  1. Wprowadź ciąg "baza danych aplikacji internetowej" na pasku wyszukiwania w górnej części witryny Azure Portal.
  2. Wybierz element oznaczony Web App + Database pod nagłówkiem Marketplace. Możesz również przejść bezpośrednio do kreatora tworzenia.

Krok 2. Na stronie Tworzenie aplikacji internetowej i bazy danych wypełnij formularz w następujący sposób.

  1. Grupa zasobów: wybierz pozycję Utwórz nową i użyj nazwy msdocs-expressjs-mongodb-tutorial.
  2. Region: dowolny region świadczenia usługi Azure blisko Ciebie.
  3. Nazwa: msdocs-expressjs-mongodb-XYZ, gdzie XYZ jest dowolnymi trzema losowymi znakami.
  4. Stos uruchomieniowy: Node 20 LTS.
  5. Silnik: API Cosmos DB dla MongoDB. Usługa Azure Cosmos DB to natywna baza danych w chmurze oferująca 100% zgodny interfejs API bazy danych MongoDB. Zanotuj nazwę bazy danych wygenerowaną dla Ciebie (<>). Będziesz jej potrzebować później.
  6. Plan hostingu: Podstawowy. Gdy wszystko będzie gotowe, możesz skalować w górę do warstwy cenowej produkcyjnej.
  7. Wybierz Przejrzyj i utwórz.
  8. Po zakończeniu walidacji wybierz pozycję Utwórz.

Krok 3: Ukończenie wdrożenia trwa kilka minut. Po zakończeniu wdrażania wybierz przycisk Przejdź do zasobu . Jesteś przekierowany bezpośrednio do aplikacji usługi App Service, ale tworzone są następujące zasoby:

  • Grupa zasobów → kontener dla wszystkich utworzonych zasobów.
  • Plan usługi App Service → Definiuje zasoby obliczeniowe dla usługi App Service. Zostanie utworzony plan systemu Linux w warstwie Podstawowa.
  • App Service → Reprezentuje aplikację i działa w planie usługi App Service.
  • Sieć wirtualna → zintegrowana z aplikacją usługi App Service i izoluje ruch sieciowy zaplecza.
  • Prywatny punkt końcowy → Punkt końcowy dostępu dla zasobu bazy danych w sieci wirtualnej.
  • Interfejs sieciowy → reprezentuje prywatny adres IP dla prywatnego punktu końcowego.
  • Usługa Azure Cosmos DB dla bazy danych MongoDB → dostępna tylko zza prywatnego punktu końcowego. Baza danych i użytkownik są tworzone dla Ciebie na serwerze.
  • Prywatna strefa DNS → umożliwia rozpoznawanie nazw DNS serwera usługi Azure Cosmos DB w sieci wirtualnej.

Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.

3. Zabezpieczanie sekretów połączeń

Kreator tworzenia wygenerował już dla Ciebie łańcuch połączenia jako ustawienie aplikacji. Jednak najlepszą praktyką w zakresie zabezpieczeń jest całkowite unikanie przechowywania tajemnic w usłudze App Service. Przeniesiesz swoje sekrety do magazynu kluczy i zmienisz ustawienie aplikacji na odwołanie do Key Vault za pomocą łączników usługi.

Krok 1: Na stronie App Service:

  1. W menu po lewej stronie wybierz pozycję Ustawienia > Zmienne środowiskowe.
  2. Obok pozycji AZURE_COSMOS_CONNECTIONSTRING wybierz pozycję Pokaż wartość. Ten parametr połączenia pozwala nawiązanie połączenia z bazą danych Cosmos DB zabezpieczoną przy prywatnym punkcie końcowym. Wpis tajny jest jednak zapisywany bezpośrednio w aplikacji usługi App Service, co nie jest najlepsze. Zmienisz to.

Krok 2: Utwórz magazyn kluczy na potrzeby bezpiecznego zarządzania tajnymi informacjami.

  1. Na górnym pasku wyszukiwania wpisz "key vault", a następnie wybierz pozycję Marketplace>Key Vault.
  2. W Grupie zasobów wybierz msdocs-expressjs-mongodb-tutorial.
  3. W polu Nazwa magazynu kluczy wpisz nazwę składającą się tylko z liter i cyfr.
  4. W Region ustaw przykładową lokalizację jako grupę zasobów.

Krok 3:

  1. Wybierz kartę Sieć .
  2. Usuń zaznaczenie pozycji Włącz dostęp publiczny.
  3. Wybierz pozycję Utwórz prywatny punkt końcowy.
  4. W Grupie zasobów wybierz msdocs-expressjs-mongodb-tutorial.
  5. W polu Nazwa magazynu kluczy wpisz nazwę składającą się tylko z liter i cyfr.
  6. W Region ustaw przykładową lokalizację jako grupę zasobów.
  7. W oknie dialogowym w polu Lokalizacja wybierz tę samą lokalizację co aplikacja usługi App Service.
  8. W Grupie zasobów wybierz msdocs-expressjs-mongodb-tutorial.
  9. W polu Nazwa wpisz msdocs-expressjs-mongodb-XYZVaultEndpoint.
  10. W sieci wirtualnej wybierz msdocs-expressjs-mongodb-XYZVnet.
  11. W podsiecimsdocs-expressjs-mongodb-XYZSubnet.
  12. Wybierz przycisk OK.
  13. Wybierz Przejrzyj i utwórz, a następnie wybierz Utwórz. Poczekaj na zakończenie wdrożenia skarbca kluczy. Powinien zostać wyświetlony komunikat "Wdrożenie zostało ukończone".

Krok 4:

  1. Na górnym pasku wyszukiwania wpisz msdocs-expressjs-mongodb, a następnie zasób usługi App Service o nazwie msdocs-expressjs-mongodb-XYZ.
  2. Na stronie App Service w menu po lewej stronie wybierz pozycję Ustawienia > Łącznik usługi. Istnieje już łącznik, który stworzył kreator tworzenia aplikacji.
  3. Zaznacz pole wyboru obok łącznika, a następnie wybierz pozycję Edytuj.
  4. Na karcie Podstawowe ustaw Typ klienta na Node.js.
  5. Wybierz kartę Uwierzytelnianie .
  6. Wybierz Przechowaj tajny w usłudze Key Vault.
  7. W obszarze Połączenie z usługą Key Vault wybierz pozycję Utwórz nową. Okno dialogowe Tworzenie połączenia jest otwierane w górnej części okna dialogowego edycji.

Krok 5: W oknie dialogowym Tworzenie połączenia dla połączenia usługi Key Vault:

  1. W usłudze Key Vault wybierz utworzony wcześniej magazyn kluczy.
  2. Wybierz Przejrzyj i utwórz. Powinieneś upewnić się, że zarządzana tożsamość przypisana przez system jest ustawiona na Wybrana.
  3. Po zakończeniu walidacji wybierz pozycję Utwórz.

Krok 6. Wróciłeś do okna dialogowego edycji defaultConnector.

  1. Na karcie Uwierzytelnianie poczekaj na utworzenie łącznika magazynu kluczy. Po zakończeniu rozwijana lista Połączenie usługi Key Vault zostanie automatycznie wybrana.
  2. Wybierz Dalej: Sieć.
  3. Wybierz pozycję Konfiguruj reguły zapory, aby włączyć dostęp do usługi docelowej. Jeśli zostanie wyświetlony komunikat "Brak prywatnego punktu końcowego w usłudze docelowej", zignoruj go. Kreator tworzenia aplikacji zabezpieczył już bazę danych usługi Cosmos DB, używając prywatnego punktu końcowego.
  4. Wybierz pozycję Zapisz. Zaczekaj na wyświetlenie powiadomienia Aktualizacja powiodła się .

Krok 7. Aby zweryfikować zmiany:

  1. W menu po lewej stronie ponownie wybierz pozycję Zmienne środowiskowe .
  2. Obok ustawienia aplikacji AZURE_COSMOS_CONNECTIONSTRING wybierz pozycję Pokaż wartość. Wartość powinna wynosić @Microsoft.KeyVault(...), co oznacza, że jest to odwołanie do magazynu kluczy, ponieważ sekret jest teraz zarządzany w magazynie kluczy.

Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.

4. Wdrażanie przykładowego kodu

W tym kroku skonfigurujesz wdrożenie usługi GitHub przy użyciu funkcji GitHub Actions. Jest to tylko jeden z wielu sposobów wdrażania w usłudze App Service, ale także doskonały sposób ciągłej integracji w procesie wdrażania. Domyślnie każde git push repozytorium GitHub rozpoczyna akcję kompilacji i wdrażania.

Krok 1: W menu po lewej stronie wybierz pozycję Centrum wdrażania>.

Krok 2. Na stronie Centrum wdrażania:

  1. W obszarze Źródło wybierz pozycję GitHub. Domyślnie funkcja GitHub Actions jest wybierana jako dostawca kompilacji.
  2. Zaloguj się do konta usługi GitHub i postępuj zgodnie z monitem, aby autoryzować platformę Azure.
  3. W obszarze Organizacja wybierz swoje konto.
  4. W Repozytorium wybierz msdocs-nodejs-mongodb-azure-sample-app.
  5. W obszarze Gałąź wybierz pozycję starter-no-infra. Jest to ta sama gałąź, w której pracowaliśmy z przykładową aplikacją bez żadnych plików ani konfiguracji związanych z platformą Azure.
  6. W polu Typ uwierzytelniania wybierz pozycję Tożsamość przypisana przez użytkownika.
  7. W górnym menu wybierz pozycję Zapisz. Usługa App Service zatwierdza plik workflow w wybranym repozytorium GitHub w katalogu .github/workflows. Domyślnie centrum wdrażania tworzy tożsamość przypisaną przez użytkownika dla przepływu pracy do uwierzytelnienia przy użyciu Microsoft Entra (uwierzytelnianie OIDC). Aby uzyskać informacje o opcjach uwierzytelniania alternatywnego, zobacz Wdrażanie w usłudze App Service przy użyciu funkcji GitHub Actions.

Krok 3: Wróć do przestrzeni roboczej GitHub w swoim przykładowym rozwidleniu, uruchom git pull origin starter-no-infra. Spowoduje to pobranie nowo zatwierdzonego pliku przepływu pracy do twojej przestrzeni kodu.

Krok 4 (opcja 1: w usłudze GitHub Copilot):

  1. Rozpocznij nową sesję czatu, wybierając widok Czat, a następnie +.
  2. Zapytaj: "@workspace Jak aplikacja łączy się z bazą danych?" Copilot może wskazać plikapp.js i wywołanie mongoose.connect.
  3. Powiedzmy: "*Mam zmienną typu connection string na platformie Azure o nazwie AZURE_COSMOS_CONNECTIONSTRING.". Copilot może zasugerować kod podobny do tego w Opcji 2: bez użycia GitHub Copilot, a nawet poinformować Cię, abyś wprowadził zmianę w app.js.
  4. Otwórz app.js w eksploratorze i dodaj sugestię kodu w metodzie getApp . GitHub Copilot nie daje tej samej odpowiedzi za każdym razem, może być konieczne zadawanie większej liczby pytań, aby dostosować jego odpowiedź. Aby uzyskać porady, zobacz Co mogę zrobić z usługą GitHub Copilot w mojej przestrzeni kodu?.

Krok 4 (opcja 2: bez narzędzia GitHub Copilot):

  1. W eksploratorze otwórz app.js.
  2. Znajdź wiersz o mongoose.connect nazwie (wiersz 16) i zmień process.env.MONGODB_URI wartość na process.env.AZURE_COSMOS_CONNECTIONSTRING || process.env.MONGODB_URI.

Krok 5:

  1. Wybierz rozszerzenie Kontroli Źródła.
  2. W polu tekstowym wpisz komunikat zatwierdzenia, taki jak Update environment variable. Możesz też wybrać i zezwolić usłudze GitHub Copilot na wygenerowanie komunikatu zatwierdzenia.
  3. Wybierz pozycję Zatwierdź, a następnie potwierdź wartość Tak.
  4. Wybierz pozycję Synchronizuj zmiany 1, a następnie potwierdź przy użyciu przycisku OK.

Krok 6. Wróć do strony Centrum wdrażania w witrynie Azure Portal:

  1. Na karcie Dzienniki wybierz pozycję Odśwież. Nowy przebieg wdrożenia został już rozpoczęty na podstawie Twoich zatwierdzonych zmian.
  2. W elemencie dziennika dla przebiegu wdrożenia wybierz wpis Dzienniki kompilacji/wdrażania z najnowszym znacznikiem czasu.

Krok 7: Zostaniesz przeniesiony do swojego repozytorium GitHub i zobaczysz, że akcja GitHub jest uruchomiona. Plik przepływu pracy definiuje dwa oddzielne etapy, kompilowanie i wdrażanie. Poczekaj na uruchomienie usługi GitHub, aby wyświetlić stan Ukończono.

Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.

5. Przejdź do aplikacji

Krok 1: Na stronie App Service:

  1. W menu po lewej stronie wybierz pozycję Przegląd.
  2. Wybierz adres URL aplikacji.

Krok 2. Dodaj kilka zadań do listy. Gratulacje, uruchamiasz bezpieczną aplikację zorientowaną na dane Node.js w usłudze Azure App Service.

6. Przesyłanie strumieniowe dzienników diagnostycznych

Usługa aplikacji Azure przechwytuje wszystkie komunikaty rejestrowane w konsoli, aby pomóc w diagnozowaniu problemów z Twoją aplikacją. Przykładowa aplikacja generuje komunikaty dziennika konsoli w każdym z jego punktów końcowych, aby zademonstrować tę funkcję. Na przykład get punkt końcowy zwraca komunikat o liczbie zadań pobranych z bazy danych i pojawia się komunikat o błędzie, jeśli coś pójdzie nie tak.

router.get('/', function(req, res, next) {
  Task.find()
    .then((tasks) => {      
      const currentTasks = tasks.filter(task => !task.completed);
      const completedTasks = tasks.filter(task => task.completed === true);

      console.log(`Total tasks: ${tasks.length}   Current tasks: ${currentTasks.length}    Completed tasks:  ${completedTasks.length}`)
      res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
    })
    .catch((err) => {
      console.log(err);
      res.send('Sorry! Something went wrong.');
    });
});

Krok 1: Na stronie App Service:

  1. W menu po lewej stronie wybierz pozycję Dzienniki usługi App Service.
  2. W obszarze Rejestrowanie aplikacji wybierz pozycję System plików.
  3. W górnym menu wybierz pozycję Zapisz.

Krok 2: Z menu po lewej wybierz Log stream. Zobaczysz dzienniki aplikacji, w tym dzienniki platformy i dzienniki z wewnątrz kontenera.

7. Sprawdzanie wdrożonych plików przy użyciu narzędzia Kudu

Usługa Azure App Service udostępnia internetową konsolę diagnosyjną o nazwie Kudu , która umożliwia sprawdzenie środowiska hostingu serwera dla aplikacji internetowej. Za pomocą narzędzia Kudu można wyświetlić pliki wdrożone na platformie Azure, przejrzeć historię wdrażania aplikacji, a nawet otworzyć sesję SSH w środowisku hostingu.

Krok 1: Na stronie App Service:

  1. W menu po lewej stronie wybierz pozycję Narzędzia zaawansowane.
  2. Wybierz pozycję Przejdź.

Krok 2. Na stronie Kudu wybierz pozycję Wdrożenia.

Jeśli wdrożysz kod w usłudze App Service przy użyciu narzędzia Git lub wdrożenia zip, zobaczysz historię wdrożeń aplikacji internetowej.

Krok 3: Wróć do strony głównej Kudu i wybierz opcję Witryna wwwroot.

Możesz wyświetlić strukturę wdrożonego folderu i wybrać opcję przeglądania i wyświetlania plików.

8. Czyszczenie zasobów

Po zakończeniu możesz usunąć wszystkie zasoby z subskrypcji platformy Azure, usuwając grupę zasobów.

Krok 1: Na pasku wyszukiwania w górnej części witryny Azure Portal:

  1. Wpisz nazwę grupy zasobów.
  2. Wybierz odpowiednią grupę zasobów.

Krok 2. Na stronie grupy zasobów wybierz pozycję Usuń grupę zasobów.

Krok 3:

  1. Wprowadź nazwę grupy zasobów, aby potwierdzić usunięcie.
  2. Wybierz pozycję Usuń.

2. Tworzenie zasobów platformy Azure i wdrażanie przykładowej aplikacji

W tym kroku utworzysz zasoby platformy Azure i wdrożysz przykładową aplikację w celu App Service dla systemu Linux. Kroki używane w tym samouczku umożliwiają utworzenie zestawu bezpiecznych domyślnie zasobów obejmujących usługę App Service i usługę Azure Cosmos DB.

Kontener deweloperski ma już interfejs wiersza polecenia dla deweloperów platformy Azure (AZD).

  1. W katalogu głównym repozytorium uruchom polecenie azd init.

    azd init --template nodejs-app-service-cosmos-redis-infra
    
  2. Po wyświetleniu monitu podaj następujące odpowiedzi:

    Pytanie Odpowiedź
    Bieżący katalog nie jest pusty. Czy chcesz zainicjować projekt tutaj w katalogu "<your-directory>"? Y
    Co chcesz zrobić z tymi plikami? Zachowaj istniejące pliki bez zmian
    Wprowadź nową nazwę środowiska Wpisz unikatową nazwę. Szablon AZD używa tej nazwy jako części nazwy DNS aplikacji internetowej na platformie Azure (<app-name>-<hash>.azurewebsites.net). Znaki alfanumeryczne i łączniki są dozwolone.
  3. Zaloguj się do platformy Azure, uruchamiając polecenie azd auth login i postępując zgodnie z instrukcjami.

    azd auth login
    
  4. Utwórz niezbędne zasoby platformy Azure i wdróż kod aplikacji przy użyciu polecenia azd up. Postępuj zgodnie z monitem, aby wybrać żądaną subskrypcję i lokalizację zasobów platformy Azure.

    azd up
    

    Wykonanie polecenia azd up trwa około 15 minut (najwięcej czasu zajmuje pamięć podręczna Redis). Ponadto kompiluje i wdraża kod aplikacji, ale później zmodyfikujesz kod, aby pracować z usługą App Service. Gdy jest uruchomiona, polecenie udostępnia komunikaty dotyczące procesu aprowizacji i wdrażania, w tym link do wdrożenia na platformie Azure. Po zakończeniu polecenie wyświetli również link do aplikacji wdrażania.

    Ten szablon AZD zawiera pliki (azure.yaml i katalog infra ), które generują domyślną architekturę secure-by-default z następującymi zasobami platformy Azure:

    • Grupa zasobów: kontener dla wszystkich utworzonych zasobów.
    • Plan usługi App Service: definiuje zasoby obliczeniowe dla usługi App Service. Zostanie utworzony plan systemu Linux w warstwie B1 .
    • App Service: reprezentuje aplikację i działa w planie usługi App Service.
    • Sieć wirtualna: zintegrowana z aplikacją usługi App Service i izoluje ruch sieciowy zaplecza.
    • Konto usługi Azure Cosmos DB z interfejsem API bazy danych MongoDB: dostępne tylko zza jego prywatnego punktu końcowego. Baza danych jest tworzona dla Ciebie na serwerze.
    • Azure Cache for Redis: dostępne tylko z poziomu sieci wirtualnej.
    • Magazyn kluczy: dostępny tylko zza prywatnego punktu końcowego. Służy do zarządzania wpisami tajnymi dla aplikacji usługi App Service.
    • Prywatne punkty końcowe: punkty końcowe dostępu dla magazynu kluczy, serwera bazy danych i pamięci podręcznej Redis w sieci wirtualnej.
    • Prywatne strefy DNS: umożliw rozpoznawanie DNS bazy danych Cosmos DB, pamięci podręcznej Redis i magazynu kluczy w ramach sieci wirtualnej.
    • Obszar roboczy usługi Log Analytics: działa jako kontener docelowy aplikacji w celu wysłania dzienników, gdzie można również wykonywać zapytania dotyczące dzienników.

    Po zakończeniu tworzenia zasobów i wdrażaniu kodu aplikacji po raz pierwszy wdrożona przykładowa aplikacja nie działa jeszcze, ponieważ musisz wprowadzić niewielkie zmiany, aby połączyć się z bazą danych na platformie Azure.

3. Sprawdź parametry połączenia

Szablon AZD już wygenerował dla Ciebie zmienne łączności jako ustawienia aplikacji i wyprowadza je do terminalu dla Twojej wygody. Ustawienia aplikacji to jeden ze sposobów na utrzymanie tajnych danych połączenia z dala od repozytorium kodu.

  1. W danych wyjściowych usługi AZD znajdź ustawienie AZURE_COSMOS_CONNECTIONSTRINGaplikacji . Wyświetlane są tylko nazwy ustawień. Wyglądają one następująco w danych wyjściowych usługi AZD:

     App Service app has the following app settings:
             - AZURE_COSMOS_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - AZURE_KEYVAULT_RESOURCEENDPOINT
             - AZURE_KEYVAULT_SCOPE
     

    AZURE_COSMOS_CONNECTIONSTRINGzawiera parametry połączenia do bazy danych Cosmos DB na platformie Azure. Musisz go użyć w kodzie później.

  2. Dla wygody szablon AZD wyświetla bezpośredni link do strony ustawień aplikacji. Znajdź link i otwórz go na nowej karcie przeglądarki.

Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.

4. Modyfikowanie przykładowego kodu i ponowne wdrażanie

  1. W usłudze GitHub Codespace rozpocznij nową sesję czatu, klikając widok Czat, a następnie klikając +.

  2. Zapytaj: "@workspace Jak aplikacja łączy się z bazą danych?" Copilot może wskazać plikapp.js i wywołanie mongoose.connect.

  3. Powiedzmy: "Mam zmienną parametrów połączenia na platformie Azure o nazwie AZURE_COSMOS_CONNECTIONSTRING.". Copilot może zasugerować kod podobny do tego w Opcji 2: bez użycia GitHub Copilot, a nawet poinformować Cię, abyś wprowadził zmianę w app.js.

  4. Otwórz app.js w eksploratorze i dodaj sugestię kodu w metodzie getApp .

    GitHub Copilot nie daje tej samej odpowiedzi za każdym razem, może być konieczne zadawanie większej liczby pytań, aby dostosować jego odpowiedź. Aby uzyskać porady, zobacz Co mogę zrobić z usługą GitHub Copilot w mojej przestrzeni kodu?.

  5. Wróć do terminalu codespace, uruchom polecenie azd deploy.

    azd deploy
    

Napiwek

Możesz również po prostu zawsze używać azd up, które wykonuje to samo, co azd package, azd provision, i azd deploy.

Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.

5. Przejdź do aplikacji

  1. W danych wyjściowych usługi AZD znajdź adres URL aplikacji i przejdź do niej w przeglądarce. Adres URL wygląda następująco w danych wyjściowych usługi AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  2. Dodaj kilka zadań do listy.

    Zrzut ekranu przedstawiający aplikację internetową Express.js z usługą Cosmos DB uruchomioną na platformie Azure z zadaniami.

    Gratulacje, uruchamiasz aplikację internetową w usłudze aplikacja systemu Azure z bezpieczną łącznością z usługą Azure Cosmos DB.

Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.

6. Przesyłanie strumieniowe dzienników diagnostycznych

Usługa aplikacji Azure przechwytuje wszystkie komunikaty rejestrowane w konsoli, aby pomóc w diagnozowaniu problemów z Twoją aplikacją. Przykładowa aplikacja generuje komunikaty dziennika konsoli w każdym z jego punktów końcowych, aby zademonstrować tę funkcję. Na przykład get punkt końcowy zwraca komunikat o liczbie zadań pobranych z bazy danych i pojawia się komunikat o błędzie, jeśli coś pójdzie nie tak.

router.get('/', function(req, res, next) {
  Task.find()
    .then((tasks) => {      
      const currentTasks = tasks.filter(task => !task.completed);
      const completedTasks = tasks.filter(task => task.completed === true);

      console.log(`Total tasks: ${tasks.length}   Current tasks: ${currentTasks.length}    Completed tasks:  ${completedTasks.length}`)
      res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
    })
    .catch((err) => {
      console.log(err);
      res.send('Sorry! Something went wrong.');
    });
});

W danych wyjściowych usługi AZD znajdź link do strumieniowego przesyłania dzienników usługi App Service i przejdź do niego w przeglądarce. Link wygląda następująco w danych wyjściowych usługi AZD:

Stream App Service logs at: <URL>

Dowiedz się więcej o logowaniu w aplikacjach Java w serii Enable Azure Monitor OpenTelemetry dla .NET, Node.js, Python i Java.

Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.

7. Czyszczenie zasobów

Aby usunąć wszystkie zasoby platformy Azure w bieżącym środowisku wdrażania, uruchom polecenie azd down i postępuj zgodnie z monitami.

azd down

Rozwiązywanie problemów

Widok wdrażania portalu dla usługi Azure Cosmos DB przedstawia stan konfliktu

W zależności od subskrypcji i wybranego regionu stan wdrożenia usługi Azure Cosmos DB może być Conflict, z następującym komunikatem w szczegółach operacji:

Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.

Błąd jest najprawdopodobniej spowodowany limitem subskrypcji dla wybranego regionu. Spróbuj wybrać inny region wdrożenia.

Na stronie przeglądarki wdrożonej aplikacji jest wyświetlany komunikat "Coś poszło nie tak".

Prawdopodobnie nadal musisz wprowadzić zmiany parametry połączenia w kodzie aplikacji. Zobacz 4. Wdrażanie przykładowego kodu.

Często zadawane pytania

Ile kosztuje ta konfiguracja?

Cennik utworzonych zasobów jest następujący:

Jak mogę połączyć się z serwerem usługi Azure Cosmos DB zabezpieczonym za siecią wirtualną przy użyciu innych narzędzi?

  • Aby uzyskać podstawowy dostęp z poziomu narzędzia wiersza polecenia, można uruchomić mongosh z poziomu terminalu SSH aplikacji. Kontener aplikacji nie zawiera mongosh, dlatego należy zainstalować go ręcznie. Należy pamiętać, że zainstalowany klient nie jest utrwalany podczas ponownego uruchamiania aplikacji.
  • Aby nawiązać połączenie z klienta graficznego interfejsu użytkownika bazy danych MongoDB, maszyna musi znajdować się w sieci wirtualnej. Na przykład może to być maszyna wirtualna Azure (VM), która jest podłączona do jednej z podsieci, albo maszyna w sieci lokalnej, która ma połączenie VPN typu site-to-site z wirtualną siecią Azure.
  • Aby nawiązać połączenie z powłoki bazy danych MongoDB ze strony zarządzania usługą Azure Cosmos DB w portalu, maszyna musi również znajdować się w sieci wirtualnej. Zamiast tego można otworzyć zaporę serwera platformy Azure Cosmos DB dla adresu IP swojego lokalnego komputera, ale zwiększa to powierzchnię ataku twojej konfiguracji.

W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?

Weź automatycznie wygenerowany plik przepływu pracy z usługi App Service jako przykład, każdy git push rozpoczyna nową kompilację i uruchomienie wdrożenia. Z lokalnego klonu repozytorium GitHub dokonujesz żądanych aktualizacji i wysyłasz je do usługi GitHub. Na przykład:

git add .
git commit -m "<some-message>"
git push origin main

Dlaczego wdrożenie funkcji GitHub Actions jest tak powolne?

Automatycznie wygenerowany plik przepływu pracy z usługi App Service definiuje proces buduj-następnie-umieść, uruchomienie obejmujące dwa zadania. Ponieważ każde zadanie jest uruchamiane we własnym czystym środowisku, plik przepływu pracy działa tak, aby deploy zadanie miało dostęp do plików z build zadania.

Większość czasu poświęcanego przez proces dwuzadaniowy jest spędzana na wysyłanie i pobieranie artefaktów. Jeśli chcesz, możesz uprościć plik przepływu pracy, łącząc dwa zadania w jedno, co eliminuje konieczność kroków wysyłania i pobierania.

Nie mam uprawnień do tworzenia tożsamości przypisanej przez użytkownika

Zobacz Konfigurowanie wdrożenia funkcji GitHub Actions z Centrum wdrażania.

Co mogę zrobić za pomocą narzędzia GitHub Copilot w swojej przestrzeni kodu?

Możliwe, że już zauważyłeś, że widok czatu GitHub Copilot był dostępny w momencie tworzenia codespace'u. Dla Wygody dołączamy rozszerzenie czatu Copilot w usłudze GitHub w definicji kontenera (zobacz .devcontainer/devcontainer.json). Potrzebujesz jednak konta GitHub Copilot (dostępna jest 30-dniowa bezpłatna wersja próbna).

Kilka wskazówek dotyczących rozmowy z usługą GitHub Copilot:

  • W jednej sesji czatu pytania i odpowiedzi opierają się na sobie nawzajem, a ty możesz dopracować swoje pytania, aby uściślić uzyskaną odpowiedź.
  • Domyślnie narzędzie GitHub Copilot nie ma dostępu do żadnego pliku w repozytorium. Aby zadać pytania dotyczące pliku, najpierw otwórz plik w edytorze.
  • Aby umożliwić usłudze GitHub Copilot dostęp do wszystkich plików w repozytorium podczas przygotowywania odpowiedzi, zacznij od pytania @workspace. Aby uzyskać więcej informacji, zobacz Use the @workspace agent.
  • W sesji czatu narzędzie GitHub Copilot może sugerować zmiany i (z @workspace) nawet wskazać, gdzie wprowadzić zmiany, ale nie jest dozwolone wprowadzanie ich za Ciebie. Wystarczy dodać sugerowane zmiany i przetestować je.

Oto kilka innych rzeczy, które można powiedzieć, aby dostroić uzyskaną odpowiedź:

  • @workspace Gdzie zdefiniowano MONGODB_URI?
  • W którym pliku wprowadzam zmianę?
  • Czy ta zmiana spowoduje przerwanie działania aplikacji lokalnie?

Następne kroki