Samouczek: wdrażanie aplikacji internetowej Node.js i bazy danych MongoDB na platformie Azure
usługa aplikacja systemu Azure 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 aplikacja systemu Azure połączonej z bazą danych Usługi Azure Cosmos DB dla bazy danych MongoDB. Po zakończeniu będziesz mieć aplikację Express.js działającą w usłudze aplikacja systemu Azure Service w systemie Linux.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Utwórz domyślną architekturę dla usługi aplikacja systemu Azure i usługi Azure Cosmos DB przy użyciu interfejsu API bazy danych MongoDB.
- Zabezpieczanie wpisów tajnych połączenia przy użyciu tożsamości zarządzanej i odwołań usługi 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.
- Konto platformy Azure z aktywną subskrypcją. Jeśli nie masz konta platformy Azure, możesz go utworzyć bezpłatnie.
- Konto usługi GitHub. Możesz również uzyskać jeden za darmo.
- Znajomość programowania Express.js.
- (Opcjonalnie) Aby wypróbować narzędzie GitHub Copilot, konto narzędzia GitHub Copilot. Dostępna jest 30-dniowa bezpłatna wersja próbna.
- Konto platformy Azure z aktywną subskrypcją. Jeśli nie masz konta platformy Azure, możesz go utworzyć bezpłatnie.
- Zainstalowany interfejs wiersza polecenia dla deweloperów platformy Azure. Możesz wykonać kroki opisane w usłudze Azure Cloud Shell, ponieważ ma już zainstalowany interfejs wiersza polecenia dla deweloperów platformy Azure.
- Znajomość programowania Express.js.
- (Opcjonalnie) Aby wypróbować narzędzie GitHub Copilot, konto narzędzia GitHub Copilot. Dostępna jest 30-dniowa bezpłatna wersja próbna.
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
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:
- Zaloguj się na istniejącym koncie GitHub.
- Przejdź do https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app/fork.
- Usuń zaznaczenie pola Kopiuj tylko gałąź główną. Chcesz, aby wszystkie gałęzie.
- Wybierz pozycję Utwórz rozwidlenie.
Krok 2. W rozwidleniu usługi GitHub:
- Wybierz opcję 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.
- 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:
- Uruchom program
npm install && npm start
. - 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, wpiszCtrl
+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.
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 aplikacji w postaci
https://<app-name>-<hash>.<region>.azurewebsites.net
. - Region do fizycznego uruchamiania aplikacji 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 aplikacja systemu Azure.
Krok 1. W witrynie Azure Portal:
- Wprowadź ciąg "baza danych aplikacji internetowej" na pasku wyszukiwania w górnej części witryny Azure Portal.
- Wybierz element z etykietą Web App + Database w obszarze nagłówka 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.
- Grupa zasobów: wybierz pozycję Utwórz nową i użyj nazwy msdocs-expressjs-mongodb-tutorial.
- Region: dowolny region świadczenia usługi Azure blisko Ciebie.
- Nazwa: msdocs-expressjs-mongodb-XYZ, gdzie XYZ jest dowolnymi trzema losowymi znakami.
- Stos środowiska uruchomieniowego: Node 20 LTS.
- Aparat: interfejs API usługi Cosmos DB dla bazy danych 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 (<app-name-database>). Będziesz jej potrzebować później.
- Plan hostingu: Podstawowy. Gdy wszystko będzie gotowe, możesz skalować w górę do warstwy cenowej produkcyjnej.
- Wybierz pozycję Przejrzyj i utwórz.
- 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.
- Usługa 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 programu Access 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 strefy → umożliwia rozpoznawanie nazw DNS serwera usługi Azure Cosmos DB w sieci wirtualnej.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Kreator tworzenia wygenerował parametry łączności dla Ciebie już jako ustawienie aplikacji. Jednak najlepszym rozwiązaniem w zakresie zabezpieczeń jest całkowite przechowywanie wpisów tajnych z usługi App Service. Twoje wpisy tajne zostaną przeniesione do magazynu kluczy i zmienisz ustawienie aplikacji na odwołanie do usługi Key Vault za pomocą łączników usługi.
Krok 1. Na stronie usługi App Service:
- W menu po lewej stronie wybierz pozycję Ustawienia > Zmienne środowiskowe.
- Obok pozycji AZURE_COSMOS_CONNECTIONSTRING wybierz pozycję Pokaż wartość. Ta parametry połączenia umożliwia nawiązanie połączenia z bazą danych Cosmos DB zabezpieczoną za prywatnym punktem końcowym. Wpis tajny jest jednak zapisywany bezpośrednio w aplikacji usługi App Service, co nie jest najlepsze. Zmienisz to.
Krok 2. Tworzenie magazynu kluczy na potrzeby bezpiecznego zarządzania wpisami tajnymi.
- Na górnym pasku wyszukiwania wpisz "key vault", a następnie wybierz pozycję Marketplace>Key Vault.
- W obszarze Grupa zasobów wybierz pozycję msdocs-expressjs-mongodb-tutorial.
- W polu Nazwa magazynu kluczy wpisz nazwę składającą się tylko z liter i cyfr.
- W obszarze Region ustaw ją na przykładową lokalizację jako grupę zasobów.
Krok 3:
- Wybierz kartę Sieć.
- Usuń zaznaczenie pozycji Włącz dostęp publiczny.
- Wybierz pozycję Utwórz prywatny punkt końcowy.
- W obszarze Grupa zasobów wybierz pozycję msdocs-expressjs-mongodb-tutorial.
- W polu Nazwa magazynu kluczy wpisz nazwę składającą się tylko z liter i cyfr.
- W obszarze Region ustaw ją na przykładową lokalizację jako grupę zasobów.
- W oknie dialogowym w polu Lokalizacja wybierz tę samą lokalizację co aplikacja usługi App Service.
- W obszarze Grupa zasobów wybierz pozycję msdocs-expressjs-mongodb-tutorial.
- W polu Nazwa wpisz msdocs-expressjs-mongodb-XYZVaultEndpoint.
- W obszarze Sieć wirtualna wybierz pozycję msdocs-expressjs-mongodb-XYZVnet.
- W podsieci msdocs-expressjs-mongodb-XYZSubnet.
- Wybierz przycisk OK.
- Wybierz pozycję Przeglądanie i tworzenie, a następnie wybierz pozycję Utwórz. Poczekaj na zakończenie wdrożenia magazynu kluczy. Powinien zostać wyświetlony komunikat "Wdrożenie zostało ukończone".
Krok 4:
- Na górnym pasku wyszukiwania wpisz msdocs-expressjs-mongodb, a następnie zasób usługi App Service o nazwie msdocs-expressjs-mongodb-XYZ.
- Na stronie App Service w menu po lewej stronie wybierz pozycję Ustawienia > Łącznik usługi. Istnieje już łącznik, który został utworzony przez kreatora tworzenia aplikacji.
- Zaznacz pole wyboru obok łącznika, a następnie wybierz pozycję Edytuj.
- Na karcie Podstawowe ustaw wartość Typ klienta na wartość Node.js.
- Wybierz kartę Uwierzytelnianie.
- Wybierz pozycję Zapisz wpis tajny w usłudze Key Vault.
- 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:
- W usłudze Key Vault wybierz utworzony wcześniej magazyn kluczy.
- Wybierz pozycję Przejrzyj i utwórz. Powinna zostać wyświetlona opcja Wybrana tożsamość zarządzana przypisana przez system.
- Po zakończeniu walidacji wybierz pozycję Utwórz.
Krok 6. Jesteś z powrotem w oknie dialogowym edycji dla defaultConnector.
- Na karcie Uwierzytelnianie poczekaj na utworzenie łącznika magazynu kluczy. Po zakończeniu zostanie automatycznie wybrana lista rozwijana Połączenie usługi Key Vault.
- Wybierz pozycję Dalej: Sieć.
- 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 przy użyciu prywatnego punktu końcowego.
- Wybierz pozycję Zapisz. Zaczekaj na wyświetlenie powiadomienia Aktualizacja powiodła się .
Krok 7. Aby zweryfikować zmiany:
- W menu po lewej stronie ponownie wybierz pozycję Zmienne środowiskowe .
- Obok ustawienia aplikacji AZURE_COSMOS_CONNECTIONSTRING wybierz pozycję Pokaż wartość. Wartość powinna mieć
@Microsoft.KeyVault(...)
wartość , co oznacza, że jest to odwołanie do magazynu kluczy, ponieważ wpis tajny jest teraz zarządzany w magazynie kluczy.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
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:
- W obszarze Źródło wybierz pozycję GitHub. Domyślnie funkcja GitHub Actions jest wybierana jako dostawca kompilacji.
- Zaloguj się do konta usługi GitHub i postępuj zgodnie z monitem, aby autoryzować platformę Azure.
- W obszarze Organizacja wybierz swoje konto.
- W obszarze Repozytorium wybierz pozycję msdocs-nodejs-mongodb-azure-sample-app.
- 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.
- W polu Typ uwierzytelniania wybierz pozycję Tożsamość przypisana przez użytkownika.
- W górnym menu wybierz pozycję Zapisz. Usługa App Service zatwierdza plik przepływu pracy w wybranym repozytorium GitHub w
.github/workflows
katalogu. Domyślnie centrum wdrażania tworzy tożsamość przypisaną przez użytkownika dla przepływu pracy do uwierzytelniania przy użyciu uwierzytelniania Microsoft Entra (OIDC). Aby uzyskać informacje o opcjach uwierzytelniania alternatywnego, zobacz Wdrażanie w usłudze App Service przy użyciu funkcji GitHub Actions.
Krok 3. Po powrocie do przestrzeni kodu usługi GitHub przykładowego rozwidlenia uruchom polecenie git pull origin starter-no-infra
.
Spowoduje to ściągnięcie nowo zatwierdzonego pliku przepływu pracy do przestrzeni kodu.
Krok 4 (opcja 1: w usłudze GitHub Copilot):
- Rozpocznij nową sesję czatu, wybierając widok Czat , a następnie wybierając +pozycję .
- Zapytaj: "@workspace Jak aplikacja łączy się z bazą danych?". Copilot może wskazać plik app.js i wywołanie
mongoose.connect
. - Powiedzmy: "*Mam zmienną parametry połączenia na platformie Azure o nazwie AZURE_COSMOS_CONNECTIONSTRING.". Copilot może dać sugestię kodu podobną do tej w opcji 2: bez poniższych kroków narzędzia GitHub Copilot , a nawet poinformuj Cię, aby wprowadzić zmiany w app.js.
- 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):
- W eksploratorze otwórz app.js.
- Znajdź wiersz o
mongoose.connect
nazwie (wiersz 16) i zmieńprocess.env.MONGODB_URI
wartość naprocess.env.AZURE_COSMOS_CONNECTIONSTRING || process.env.MONGODB_URI
.
Krok 5:
- Wybierz rozszerzenie Kontroli źródła.
- 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.
- Wybierz pozycję Zatwierdź, a następnie potwierdź wartość Tak.
- Wybierz pozycję Synchronizuj zmiany 1, a następnie potwierdź przy użyciu przycisku OK.
Krok 6. Powrót do strony Centrum wdrażania w witrynie Azure Portal:
- Na karcie Dzienniki wybierz pozycję Odśwież. Nowe uruchomienie wdrożenia zostało już uruchomione z zatwierdzonych zmian.
- W elemencie dziennika dla przebiegu wdrożenia wybierz wpis Build/Deploy Logs (Wdróż dzienniki kompilacji/wdrażania) z najnowszym znacznikiem czasu.
Krok 7. Wykonano cię do repozytorium GitHub i zobaczysz, że akcja usługi 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.
Krok 1. Na stronie usługi App Service:
- W menu po lewej stronie wybierz pozycję Przegląd.
- Wybierz adres URL aplikacji. Możesz również przejść bezpośrednio do
https://<app-name>.azurewebsites.net
adresu .
Krok 2. Dodaj kilka zadań do listy. Gratulacje, korzystasz z bezpiecznej aplikacji opartej na danych Node.js w usłudze aplikacja systemu Azure Service.
usługa aplikacja systemu Azure przechwytuje wszystkie komunikaty zarejestrowane w konsoli, aby ułatwić diagnozowanie problemów z 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 usługi App Service:
- W menu po lewej stronie wybierz pozycję Dzienniki usługi App Service.
- W obszarze Rejestrowanie aplikacji wybierz pozycję System plików.
- W górnym menu wybierz pozycję Zapisz.
Krok 2. W menu po lewej stronie wybierz pozycję Strumień dziennika. Zobaczysz dzienniki aplikacji, w tym dzienniki platformy i dzienniki z wewnątrz kontenera.
usługa aplikacja systemu Azure udostępnia konsolę diagnostyki sieci Web o nazwie Kudu, który 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 usługi App Service:
- W menu po lewej stronie wybierz pozycję Narzędzia zaawansowane.
- Wybierz pozycję Idź. Możesz również przejść bezpośrednio do
https://<app-name>.scm.azurewebsites.net
adresu .
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 pozycję Witryna wwwroot.
Możesz wyświetlić strukturę wdrożonego folderu i wybrać opcję przeglądania i wyświetlania plikó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:
- Wpisz nazwę grupy zasobów.
- Wybierz odpowiednią grupę zasobów.
Krok 2. Na stronie grupy zasobów wybierz pozycję Usuń grupę zasobów.
Krok 3:
- Wprowadź nazwę grupy zasobów, aby potwierdzić usunięcie.
- Wybierz Usuń.
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).
W katalogu głównym repozytorium uruchom polecenie
azd init
.azd init --template nodejs-app-service-cosmos-redis-infra
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.Zaloguj się do platformy
azd auth login
Azure, uruchamiając polecenie i postępując zgodnie z wierszem polecenia:azd auth login
Utwórz niezbędne zasoby platformy Azure i wdróż kod aplikacji za
azd up
pomocą polecenia . Postępuj zgodnie z monitem, aby wybrać żądaną subskrypcję i lokalizację zasobów platformy Azure.azd up
Wykonanie
azd up
polecenia trwa około 15 minut (pamięć podręczna Redis cache zajmuje najwięcej czasu). 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.
- Prywatna strefa DNS strefy: włącz rozpoznawanie nazw DNS bazy danych Cosmos DB, pamięci podręcznej Redis i magazynu kluczy w 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.
Szablon AZD wygenerował zmienne łączności dla Ciebie już jako ustawienia aplikacji i wyprowadza je do terminalu dla wygody. Ustawienia aplikacji to jeden ze sposobów przechowywania wpisów tajnych połączenia z repozytorium kodu.
W danych wyjściowych usługi AZD znajdź ustawienie
AZURE_COSMOS_CONNECTIONSTRING
aplikacji . 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_CONNECTIONSTRING
zawiera parametry połączenia do bazy danych Cosmos DB na platformie Azure. Należy go użyć w kodzie później.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.
W usłudze GitHub Codespace rozpocznij nową sesję czatu, klikając widok Czat , a następnie klikając +pozycję .
Zapytaj: "@workspace Jak aplikacja łączy się z bazą danych?". Copilot może wskazać plik app.js i wywołanie
mongoose.connect
.Powiedzmy: "Mam zmienną parametry połączenia na platformie Azure o nazwie AZURE_COSMOS_CONNECTIONSTRING.". Copilot może dać sugestię kodu podobną do tej w opcji 2: bez poniższych kroków narzędzia GitHub Copilot , a nawet poinformuj Cię, aby wprowadzić zmiany w app.js.
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?.
Wróć do terminalu codespace, uruchom polecenie
azd deploy
.azd deploy
Napiwek
Możesz również użyć azd up
zawsze, co wykonuje wszystkie polecenia azd package
, azd provision
i azd deploy
.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
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: https://<app-name>-<hash>.azurewebsites.net/
Dodaj kilka zadań do listy.
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.
usługa aplikacja systemu Azure przechwytuje wszystkie komunikaty zarejestrowane w konsoli, aby ułatwić diagnozowanie problemów z 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: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Dowiedz się więcej na temat rejestrowania w aplikacjach Java w serii w temacie Włączanie usługi Azure Monitor OpenTelemetry dla platformy .NET, Node.js, python i Java.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemó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
- Widok wdrażania portalu dla usługi Azure Cosmos DB przedstawia stan konfliktu
- Na stronie przeglądarki wdrożonej aplikacji jest wyświetlany komunikat "Coś poszło nie tak".
W zależności od subskrypcji i wybranego regionu stan wdrożenia usługi Azure Cosmos DB może mieć Conflict
wartość , z następującym komunikatem w obszarze Szczegóły 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.
Prawdopodobnie nadal musisz wprowadzić zmiany parametry połączenia w kodzie aplikacji. Zobacz 4. Wdrażanie przykładowego kodu.
- Ile kosztuje ta konfiguracja?
- Jak mogę połączyć się z serwerem usługi Azure Cosmos DB zabezpieczonym za siecią wirtualną przy użyciu innych narzędzi?
- W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?
- Dlaczego wdrożenie funkcji GitHub Actions jest tak powolne?
- Nie mam uprawnień do tworzenia tożsamości przypisanej przez użytkownika
- Co mogę zrobić za pomocą narzędzia GitHub Copilot w swojej przestrzeni kodu?
Cennik utworzonych zasobów jest następujący:
- Plan usługi App Service jest tworzony w warstwie Podstawowa i można go skalować w górę lub w dół. Zobacz Cennik usługi App Service.
- Serwer usługi Azure Cosmos DB jest tworzony w jednym regionie i może być dystrybuowany do innych regionów. Zobacz Cennik usługi Azure Cosmos DB.
- Sieć wirtualna nie powoduje naliczania opłat, chyba że skonfigurujesz dodatkowe funkcje, takie jak komunikacja równorzędna. Zobacz Cennik usługi Azure Virtual Network.
- Prywatna strefa DNS wiąże się z niewielką opłatą. Zobacz Cennik usługi Azure DNS.
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 jest dołączony domongosh
elementu , 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 platformy Azure połączona z jedną z podsieci lub maszyna w sieci lokalnej, która ma połączenie sieci VPN typu lokacja-lokacja z siecią wirtualną platformy 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 usługi Azure Cosmos DB dla adresu IP maszyny lokalnej, ale zwiększa obszar ataków dla konfiguracji.
Pobierz automatycznie wygenerowany plik przepływu pracy z usługi App Service, aby na przykład git push
uruchomić nową kompilację i uruchomienie wdrożenia. Z lokalnego klonu repozytorium GitHub należy wprowadzić żądane aktualizacje wypychane do usługi GitHub. Na przykład:
git add .
git commit -m "<some-message>"
git push origin main
Automatycznie wygenerowany plik przepływu pracy z usługi App Service definiuje polecenie build-then-deploy, dwuzadniowe uruchomienie. Ponieważ każde zadanie jest uruchamiane we własnym czystym środowisku, plik przepływu pracy zapewnia, że deploy
zadanie ma dostęp do plików z build
zadania:
- Na końcu
build
zadania przekaż pliki jako artefakty. - Na początku
deploy
zadania pobierz artefakty.
Większość czasu poświęcanego przez proces dwóch zadań jest poświęcana na przekazywanie i pobieranie artefaktów. Jeśli chcesz, możesz uprościć plik przepływu pracy, łącząc dwa zadania w jeden, co eliminuje konieczność przekazywania i pobierania kroków.
Zobacz Konfigurowanie wdrożenia funkcji GitHub Actions z Centrum wdrażania.
Możesz zauważyć, że widok czatu Copilot w usłudze GitHub był już dostępny podczas tworzenia przestrzeni kodu. Dla Twojej 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 i możesz dostosować swoje pytania, aby dostosować 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 tam, gdzie wprowadzić zmiany, ale nie może wprowadzać zmian. 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?