Oktatóanyag: Node.js + MongoDB-webalkalmazás üzembe helyezése az Azure-ban
Azure-alkalmazás Szolgáltatás egy nagymértékben skálázható, önjavító web hosting szolgáltatást biztosít a Linux operációs rendszer használatával. Ez az oktatóanyag bemutatja, hogyan hozhat létre biztonságos Node.js alkalmazást Azure-alkalmazás Szolgáltatásban, amely egy Azure Cosmos DB for MongoDB-adatbázishoz csatlakozik. Ha végzett, egy Express.js-alkalmazás fog futni a Linuxon futó Azure-alkalmazás service-en.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Hozzon létre egy biztonságos alapértelmezett architektúrát Azure-alkalmazás Szolgáltatáshoz és az Azure Cosmos DB-hez a MongoDB API-val.
- A kapcsolati titkos kulcsok biztonságossá tételéhez használjon felügyelt identitást és Key Vault-hivatkozásokat.
- Node.js mintaalkalmazás üzembe helyezése az App Service-ben egy GitHub-adattárból.
- Az App Service alkalmazásbeállításainak elérése az alkalmazáskódban.
- Végezze el a frissítéseket, és telepítse újra az alkalmazáskódot.
- Diagnosztikai naplók streamelése az App Service-ből.
- Az alkalmazás kezelése az Azure Portalon.
- Azonos architektúra kiépítése és üzembe helyezése az Azure Developer CLI használatával.
- Optimalizálja a fejlesztési munkafolyamatot a GitHub Codespaces és a GitHub Copilot használatával.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Ha nem rendelkezik Azure-fiókkal, ingyenesen létrehozhat egyet.
- Egy GitHub-fiók. ingyenesen is beszerezhet egyet.
- A Express.js fejlesztésének ismerete.
- (Nem kötelező) A GitHub Copilot kipróbálásához egy GitHub Copilot-fiók. 30 napos ingyenes próbaverzió érhető el.
- Egy Azure-fiók, aktív előfizetéssel. Ha nem rendelkezik Azure-fiókkal, ingyenesen létrehozhat egyet.
- Az Azure Developer CLI telepítve van. Kövesse az Azure Cloud Shell lépéseit, mert már telepítve van az Azure Developer CLI.
- A Express.js fejlesztésének ismerete.
- (Nem kötelező) A GitHub Copilot kipróbálásához egy GitHub Copilot-fiók. 30 napos ingyenes próbaverzió érhető el.
Ugrás a végére
Ebben az oktatóanyagban gyorsan üzembe helyezheti a mintaalkalmazást, és megtekintheti, hogy fut-e az Azure-ban. Futtassa a következő parancsokat az Azure Cloud Shellben, és kövesse a következő utasításokat:
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. A minta futtatása
Először állítson be egy adatvezérelt mintaalkalmazást kiindulási pontként. Az Ön kényelme érdekében a mintaadattár tartalmaz egy fejlesztői tárolókonfigurációt. A fejlesztői tároló mindent tartalmaz, amire szüksége van egy alkalmazás fejlesztéséhez, beleértve az adatbázist, a gyorsítótárat és a mintaalkalmazás által igényelt összes környezeti változót. A fejlesztői tároló egy GitHub-kódtérben futtatható, ami azt jelenti, hogy a mintát bármely számítógépen futtathatja webböngészővel.
1. lépés: Új böngészőablakban:
- Jelentkezzen be a GitHub-fiókjába.
- Navigáljon a https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app/fork lapra
- Törölje a jelölést : Csak a főág másolása. Az összes ágat szeretnéd.
- Válassza az Elágazás létrehozása lehetőséget.
2. lépés: A GitHub-elágazásban:
- Válassza ki a kezdő ág fő>starter-no-infra elemét. Ez az ág csak a mintaprojektet tartalmazza, és nincs Azure-nal kapcsolatos fájl vagy konfiguráció.
- Válassza a Kód>létrehozása kódteret a starter-no-infra rendszeren. A kódtér beállítása néhány percet vesz igénybe.
3. lépés: A kódtér termináljában:
- Futtassa az
npm install && npm start
parancsot. - Amikor megjelenik az értesítés
Your application running on port 3000 is available.
, válassza a Megnyitás böngészőben lehetőséget. A mintaalkalmazásnak egy új böngészőlapon kell megjelennie. A Express.js alkalmazás leállításához írja be a következőtCtrl
+C
: .
Tipp.
Erről az adattárról a GitHub Copilotot is megkérdezheti. Példa:
- @workspace Mit tesz ez a projekt?
- @workspace Mit tesz a .devcontainer mappa?
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
2. Az App Service és az Azure Cosmos DB létrehozása
Ebben a lépésben hozza létre az Azure-erőforrásokat. Az oktatóanyagban használt lépések az App Service-t és a MongoDB-hez készült Azure Cosmos DB-t tartalmazó, alapértelmezés szerint biztonságos erőforrások készletét hozzák létre. A létrehozási folyamathoz a következőket kell megadnia:
- A webalkalmazás neve . Ez az alkalmazás
https://<app-name>-<hash>.<region>.azurewebsites.net
DNS-nevének részeként használatos. - A régió , amely fizikailag futtatja az alkalmazást a világon. Az alkalmazás DNS-nevének részeként is használják.
- Az alkalmazás futtatókörnyezeti vereme . Itt választhatja ki az alkalmazáshoz használni kívánt Node-verziót.
- Az alkalmazás üzemeltetési terve . Ez a tarifacsomag, amely tartalmazza az alkalmazás funkcióit és skálázási kapacitását.
- Az alkalmazás erőforráscsoportja . Az erőforráscsoportokkal (logikai tárolóban) csoportosíthatja az alkalmazáshoz szükséges Összes Azure-erőforrást.
Jelentkezzen be az Azure Portalra, és kövesse az alábbi lépéseket a Azure-alkalmazás szolgáltatás erőforrásainak létrehozásához.
1. lépés: Az Azure Portalon:
- Írja be a "webalkalmazás-adatbázis" kifejezést az Azure Portal tetején található keresősávba.
- Válassza ki a Web App + Adatbázis címkével ellátott elemet a Marketplace címsora alatt. A létrehozási varázslót közvetlenül is megnyithatja.
2. lépés: A Webalkalmazás létrehozása + Adatbázis lapon töltse ki az űrlapot az alábbiak szerint.
- Erőforráscsoport: Válassza az Új létrehozása lehetőséget, és használja az msdocs-expressjs-mongodb-tutorial nevet.
- Régió: Bármely Önhöz közeli Azure-régió.
- Név: msdocs-expressjs-mongodb-XYZ, ahol az XYZ tetszőleges három véletlenszerű karakter.
- Futtatókörnyezeti verem: Node 20 LTS.
- Motor: Cosmos DB API a MongoDB-hez. Az Azure Cosmos DB egy natív felhőadatbázis, amely 100%-ban MongoDB-kompatibilis API-t kínál. Jegyezze fel az Ön számára létrehozott adatbázisnevet (app-name-database>).< Erre később még szüksége lesz.
- Üzemeltetési terv: Alapszintű. Ha készen áll, felskálázhat egy éles tarifacsomagra.
- Válassza az Áttekintés + létrehozás lehetőséget.
- Az ellenőrzés befejezése után válassza a Létrehozás lehetőséget.
3. lépés: Az üzembe helyezés néhány percet vesz igénybe. Az üzembe helyezés befejeződése után válassza az Erőforrás megnyitása gombot. Közvetlenül az App Service-alkalmazásba kerül, de a következő erőforrások jönnek létre:
- Az erőforráscsoport az összes létrehozott erőforrás tárolóját →.
- Az App Service-csomag → Az App Service számítási erőforrásait határozza meg. Létrejön egy Linux-csomag az alapszinten .
- Az App Service → Az alkalmazást jelöli, és az App Service-csomagban fut.
- A virtuális hálózat → Integrálva van az App Service alkalmazással, és elkülöníti a háttérbeli hálózati forgalmat.
- A privát végpont → Access-végpontot a virtuális hálózaton lévő adatbázis-erőforráshoz.
- A hálózati adapter → A privát végpont magánhálózati IP-címét jelöli.
- A MongoDB-hez készült Azure Cosmos DB → Csak a privát végpont mögül érhető el. A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
- saját DNS zóna → Engedélyezi az Azure Cosmos DB-kiszolgáló DNS-feloldását a virtuális hálózaton.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
3. A kapcsolat titkos kulcsának védelme
A létrehozási varázsló már alkalmazásbeállításként létrehozta a kapcsolati sztringet. A biztonsági ajánlott eljárás azonban az, hogy a titkos kulcsokat teljesen kizárja az App Service-ből. A titkos kulcsokat egy kulcstartóba helyezi át, és a Service Connectors segítségével kulcstartó-referenciára módosítja az alkalmazásbeállítást.
1. lépés: Az App Service oldalán:
- A bal oldali menüben válassza a Beállítások > környezet változói lehetőséget.
- A AZURE_COSMOS_CONNECTIONSTRING mellett válassza az Érték megjelenítése lehetőséget. Ez a kapcsolati sztring lehetővé teszi a privát végpont mögött biztonságos Cosmos DB-adatbázishoz való csatlakozást. A titkos kód azonban közvetlenül az App Service-alkalmazásban lesz mentve, ami nem a legjobb. Ezt meg fogja változtatni.
2. lépés: Kulcstartó létrehozása a titkos kódok biztonságos kezeléséhez.
- A felső keresősávon írja be a "key vault" kifejezést, majd válassza a Marketplace>Key Vault lehetőséget.
- Az erőforráscsoportban válassza az msdocs-expressjs-mongodb-tutorial lehetőséget.
- A Key Vault nevében írjon be egy nevet, amely csak betűkből és számokból áll.
- A Régióban állítsa a mintahelyre erőforráscsoportként.
3. lépés:
- Válassza a Hálózatkezelés lapot.
- Törölje a jelölést a nyilvános hozzáférés engedélyezése jelölőnégyzetből.
- Válassza a Privát végpont létrehozása lehetőséget.
- Az erőforráscsoportban válassza az msdocs-expressjs-mongodb-tutorial lehetőséget.
- A Key Vault nevében írjon be egy nevet, amely csak betűkből és számokból áll.
- A Régióban állítsa a mintahelyre erőforráscsoportként.
- A párbeszédpanel Hely területén válassza ki ugyanazt a helyet, mint az App Service-alkalmazás.
- Az erőforráscsoportban válassza az msdocs-expressjs-mongodb-tutorial lehetőséget.
- Írja be az msdocs-expressjs-mongodb-XYZVaultEndpoint nevet.
- A virtuális hálózatban válassza az msdocs-expressjs-mongodb-XYZVnet lehetőséget.
- Az alhálózatban msdocs-expressjs-mongodb-XYZSubnet.
- Kattintson az OK gombra.
- Válassza a Felülvizsgálat + létrehozás, majd a Létrehozás lehetőséget. Várja meg, amíg a Key Vault üzembe helyezése befejeződik. A következőt kell látnia: "Az üzembe helyezés befejeződött".
4. lépés:
- A felső keresősávba írja be az msdocs-expressjs-mongodb kifejezést, majd az msdocs-expressjs-mongodb-XYZ nevű App Service-erőforrást.
- Az App Service lap bal oldali menüjében válassza a Beállítások > szolgáltatás-összekötő lehetőséget. Már van egy összekötő, amelyet az alkalmazáslétrehozó varázsló hozott létre Önnek.
- Jelölje be az összekötő melletti jelölőnégyzetet, majd válassza a Szerkesztés lehetőséget.
- Az Alapszintű beállítások lapon állítsa az ügyféltípust Node.js értékre.
- Válassza a Hitelesítés lapot.
- Válassza a Titkos kulcs tárolása lehetőséget a Key Vaultban.
- A Key Vault-kapcsolat területen válassza az Új létrehozása lehetőséget. A szerkesztési párbeszédpanel tetején megnyílik a Kapcsolat létrehozása párbeszédpanel.
5. lépés: A Key Vault-kapcsolat Kapcsolat létrehozása párbeszédpaneljén:
- A Key Vaultban válassza ki a korábban létrehozott kulcstartót.
- Válassza a Felülvizsgálat és létrehozás lehetőséget. Látnia kell, hogy a rendszer által hozzárendelt felügyelt identitás ki van jelölve.
- Amikor az ellenőrzés befejeződött, válassza a Létrehozás lehetőséget.
6. lépés: Ismét megjelenik az alapértelmezettConnector szerkesztési párbeszédpanelje.
- A Hitelesítés lapon várja meg, amíg létrejön a Key Vault-összekötő. Ha elkészült, a Key Vault kapcsolat legördülő listája automatikusan kiválasztja azt.
- Válassza a Tovább: Hálózatkezelés lehetőséget.
- Válassza a Tűzfalszabályok konfigurálása lehetőséget a célszolgáltatáshoz való hozzáférés engedélyezéséhez. Ha a "Nincs privát végpont a célszolgáltatáson" üzenet jelenik meg, hagyja figyelmen kívül. Az alkalmazáslétrehozás varázsló már egy privát végponttal biztosította a Cosmos DB-adatbázist.
- Válassza a Mentés lehetőséget. Várja meg, amíg megjelenik a frissítés sikeres értesítése.
7. lépés: A módosítások ellenőrzése:
- A bal oldali menüben válassza ismét a Környezeti változók lehetőséget.
- Az alkalmazásbeállítás AZURE_COSMOS_CONNECTIONSTRING mellett válassza az Érték megjelenítése lehetőséget. Az értéknek meg kell lennie
@Microsoft.KeyVault(...)
, ami azt jelenti, hogy ez egy kulcstartó-hivatkozás , mert a titkos kulcs most már a kulcstartóban van kezelve.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
4. Mintakód üzembe helyezése
Ebben a lépésben konfigurálja a GitHub üzembe helyezését a GitHub Actions használatával. Ez csak egy az App Service-ben történő üzembe helyezés számos módja közül, de nagyszerű módja annak is, hogy folyamatos integrációt nyújtsunk az üzembe helyezési folyamatba. Alapértelmezés szerint a GitHub-adattár minden git push
eleme elindítja a buildelési és üzembe helyezési műveletet.
1. lépés: A bal oldali menüben válassza az Üzembe helyezési>központ lehetőséget.
2. lépés: Az Üzembehelyezési központ lapon:
- A Forrás területen válassza a GitHubot. Alapértelmezés szerint a GitHub Actions van kiválasztva buildszolgáltatóként.
- Jelentkezzen be a GitHub-fiókjába, és kövesse az utasításokat az Azure engedélyezéséhez.
- A Szervezetben válassza ki a fiókját.
- Az Adattárban válassza az msdocs-nodejs-mongodb-azure-sample-app lehetőséget.
- Az Ágban válassza a starter-no-infra lehetőséget. Ez ugyanaz az ág, amelyben a mintaalkalmazással dolgozott, azure-ral kapcsolatos fájlok és konfigurációk nélkül.
- Hitelesítési típus esetén válassza a felhasználó által hozzárendelt identitást.
- A felső menüben válassza a Mentés lehetőséget. Az App Service véglegesít egy munkafolyamat-fájlt a kiválasztott GitHub-adattárba a
.github/workflows
címtárban. Alapértelmezés szerint az üzembehelyezési központ létrehoz egy felhasználó által hozzárendelt identitást a munkafolyamathoz a Microsoft Entra (OIDC-hitelesítés) használatával történő hitelesítéshez. Alternatív hitelesítési lehetőségekért lásd : Üzembe helyezés az App Service-ben a GitHub Actions használatával.
3. lépés: Futtassa git pull origin starter-no-infra
újra a mintaelágazás GitHub-kódterében.
Ezzel lekéri az újonnan véglegesített munkafolyamat-fájlt a kódtérbe.
4. lépés (1. lehetőség: a GitHub Copilottal):
- Indítsa el az új csevegési munkamenetet a Csevegés nézet kiválasztásával, majd válassza a +lehetőséget.
- Kérdezze meg a következőt: "@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz?" A Copilot a app.js fájlra és a hívásra
mongoose.connect
irányíthatja. - Mondja el a következőt: "*Van egy kapcsolati sztring változóm az Azure-ban AZURE_COSMOS_CONNECTIONSTRING." Előfordulhat, hogy a Copilot a 2. lehetőséghez hasonló kódjavaslatot ad: a GitHub Copilot alábbi lépései nélkül, és még azt is megmondhatja, hogy végezze el a módosítást a app.js.
- Nyissa meg a app.js a kezelőben, és adja hozzá a kódjavaslatot a
getApp
metódushoz. A GitHub Copilot nem minden alkalommal ad ugyanazt a választ, előfordulhat, hogy további kérdéseket kell feltennie a válasz finomhangolásához. Tippekért lásd: Mit tehetek a GitHub Copilottal a kódtérben?
4. lépés (2. lehetőség: a GitHub Copilot nélkül):
- Nyissa meg a app.js.
- Keresse meg a hívott sort
mongoose.connect
(16. sor), és váltson aprocess.env.MONGODB_URI
következőreprocess.env.AZURE_COSMOS_CONNECTIONSTRING || process.env.MONGODB_URI
: .
5. lépés:
- Válassza ki a Forrásvezérlő bővítményt.
- A szövegmezőbe írjon be egy véglegesítési üzenetet, például
Update environment variable
: . Vagy válassza kiés hagyja, hogy a GitHub Copilot véglegesítési üzenetet hozzon létre Önnek.
- Válassza a Véglegesítés lehetőséget, majd erősítse meg igennel.
- Válassza a Módosítások szinkronizálása 1 lehetőséget, majd erősítse meg az OK gombot.
6. lépés: Vissza az Üzembehelyezési központ lapra az Azure Portalon:
- A Naplók lapon válassza a Frissítés lehetőséget. Egy új üzembehelyezési futtatás már elindult a véglegesített módosításokból.
- Az üzembe helyezési futtatás naplóelemében válassza ki a Build/Deploy Logs bejegyzést a legújabb időbélyeggel.
7. lépés: A GitHub-adattárba kerül, és láthatja, hogy a GitHub-művelet fut. A munkafolyamat-fájl két különálló szakaszt határoz meg, a buildelést és az üzembe helyezést. Várja meg, amíg a GitHub fut, és megjeleníti a Kész állapotot.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
5. Tallózás az alkalmazáshoz
1. lépés: Az App Service oldalán:
- A bal oldali menüben válassza az Áttekintés lehetőséget.
- Válassza ki az alkalmazás URL-címét. Közvetlenül a következőre
https://<app-name>.azurewebsites.net
is navigálhat.
2. lépés: Adjon hozzá néhány feladatot a listához. Gratulálunk, biztonságos adatvezérelt Node.js alkalmazást futtat a Azure-alkalmazás Service-ben.
6. Diagnosztikai naplók streamelése
Azure-alkalmazás szolgáltatás rögzíti a konzolra naplózott összes üzenetet, hogy segítsen az alkalmazással kapcsolatos problémák diagnosztizálásában. A mintaalkalmazás minden végpontján konzolnapló-üzeneteket ad ki, hogy bemutassuk ezt a képességet. A végpont például üzenetet küld az adatbázisból lekért feladatok számáról, get
és hibaüzenet jelenik meg, ha valami hiba történik.
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.');
});
});
1. lépés: Az App Service oldalán:
- A bal oldali menüben válassza az App Service-naplók lehetőséget.
- Az Alkalmazásnaplózás területen válassza a Fájlrendszer lehetőséget.
- A felső menüben válassza a Mentés lehetőséget.
2. lépés: A bal oldali menüben válassza a Naplóstream lehetőséget. Láthatja az alkalmazás naplóit, beleértve a platformnaplókat és a tárolón belüli naplókat.
7. Az üzembe helyezett fájlok vizsgálata a Kudu használatával
Azure-alkalmazás szolgáltatás egy webalapú diagnosztikai konzolt biztosít,Kudu, amely lehetővé teszi a webalkalmazás kiszolgálói üzemeltetési környezetének vizsgálatát. A Kudu használatával megtekintheti az Azure-ban üzembe helyezett fájlokat, áttekintheti az alkalmazás üzembe helyezési előzményeit, és akár SSH-munkamenetet is megnyithat az üzemeltetési környezetben.
1. lépés: Az App Service oldalán:
- A bal oldali menüben válassza a Speciális eszközök lehetőséget.
- Válassza az Indít elemet. Közvetlenül a következőre
https://<app-name>.scm.azurewebsites.net
is navigálhat.
2. lépés: A Kudu lapon válassza az Üzemelő példányok lehetőséget.
Ha kódot helyez üzembe az App Service-ben a Git vagy a zip deploy használatával, láthatja a webalkalmazás üzembe helyezésének előzményeit.
3. lépés: Térjen vissza a Kudu kezdőlapjára, és válassza a Webhely wwwroot lehetőséget.
Megtekintheti az üzembe helyezett mappastruktúrát, és kiválaszthatja a fájlok tallózását és megtekintését.
8. Erőforrások törlése
Ha végzett, törölheti az összes erőforrást az Azure-előfizetéséből az erőforráscsoport törlésével.
1. lépés: Az Azure Portal tetején található keresősávon:
- Adja meg az erőforráscsoport nevét.
- Válassza ki az erőforráscsoportot.
2. lépés: Az erőforráscsoport lapján válassza az Erőforráscsoport törlése lehetőséget.
3. lépés:
- A törlés megerősítéséhez adja meg az erőforráscsoport nevét.
- Válassza a Törlés lehetőséget.
2. Azure-erőforrások létrehozása és mintaalkalmazás üzembe helyezése
Ebben a lépésben létrehozza az Azure-erőforrásokat, és üzembe helyez egy mintaalkalmazást a Linuxon futó App Service-ben. Az oktatóanyagban használt lépések az App Service-t és az Azure Cosmos DB-t is tartalmazó, alapértelmezés szerint biztonságos erőforrások készletét hozzák létre.
A fejlesztői tárolóban már megtalálható az Azure Developer CLI (AZD).
Futtassa
azd init
az adattár gyökerét.azd init --template nodejs-app-service-cosmos-redis-infra
Amikor a rendszer kéri, adja meg a következő válaszokat:
Kérdés Válasz Az aktuális könyvtár nem üres. Inicializálni szeretne egy projektet itt a "saját könyvtárában>"?< Y Mit szeretne tenni ezekkel a fájlokkal? Meglévő fájljaim változatlanul tartása Adjon meg egy új környezetnevet Írjon be egy egyedi nevet. Az AZD-sablon ezt a nevet használja a webalkalmazás DNS-nevének részeként az Azure-ban ( <app-name>-<hash>.azurewebsites.net
). Alfanumerikus karakterek és kötőjelek engedélyezettek.Jelentkezzen be az Azure-ba a
azd auth login
parancs futtatásával és a parancssor követésével:azd auth login
Hozza létre a szükséges Azure-erőforrásokat, és telepítse az alkalmazáskódot a
azd up
paranccsal. Kövesse az utasításokat az Azure-erőforrások kívánt előfizetésének és helyének kiválasztásához.azd up
A
azd up
parancs végrehajtása körülbelül 15 percet vesz igénybe (a Redis-gyorsítótár a legtöbb időt veszi igénybe). Emellett lefordítja és üzembe helyezi az alkalmazáskódot, de később módosítja a kódot, hogy működjön az App Service-lel. Amíg fut, a parancs üzeneteket küld a kiépítési és üzembe helyezési folyamatról, beleértve az Azure-beli üzembe helyezésre mutató hivatkozást is. Amikor befejeződik, a parancs egy hivatkozást is megjelenít az üzembe helyezési alkalmazásra.Ez az AZD-sablon olyan fájlokat (azure.yaml és infra könyvtár) tartalmaz, amelyek az alábbi Azure-erőforrásokkal létrehoznak egy alapértelmezett, biztonságos architektúrát:
- Erőforráscsoport: Az összes létrehozott erőforrás tárolója.
- App Service-csomag: Meghatározza az App Service számítási erőforrásait. Létrejön egy Linux-csomag a B1 szinten.
- App Service: Az alkalmazást jelöli, és az App Service-csomagban fut.
- Virtuális hálózat: Integrálva az App Service alkalmazással, és elkülöníti a háttérhálózat forgalmát.
- Azure Cosmos DB-fiók a MongoDB API-val: Csak a privát végpontja mögött érhető el. A rendszer létrehoz egy adatbázist a kiszolgálón.
- Azure Cache for Redis: Csak a virtuális hálózaton belülről érhető el.
- Key Vault: Csak a privát végpontja mögött érhető el. Az App Service-alkalmazás titkos kulcsainak kezelésére szolgál.
- Privát végpontok: Hozzáférési végpontok a kulcstartóhoz, az adatbázis-kiszolgálóhoz és a Redis-gyorsítótárhoz a virtuális hálózaton.
- saját DNS zónák: Engedélyezze a Cosmos DB-adatbázis, a Redis-gyorsítótár és a kulcstartó DNS-feloldását a virtuális hálózaton.
- Log Analytics-munkaterület: Az alkalmazás céltárolójaként szolgál a naplók elküldéséhez, ahol a naplókat is lekérdezheti.
Ha a parancs befejezi az erőforrások létrehozását és az alkalmazáskód első üzembe helyezését, az üzembe helyezett mintaalkalmazás még nem működik, mert kis módosításokat kell végrehajtania ahhoz, hogy csatlakozni lehessen az Azure-beli adatbázishoz.
3. A kapcsolati sztring ellenőrzése
Az Ön által használt AZD-sablon már alkalmazásbeállításokként létrehozta a kapcsolati változókat, és azokat az ön kényelme érdekében a terminálon adja ki. Az alkalmazásbeállítások az egyik módja annak, hogy a kapcsolat titkos kulcsait ne használja a kódtárban.
Az AZD-kimenetben keresse meg az alkalmazásbeállítást
AZURE_COSMOS_CONNECTIONSTRING
. Csak a beállításnevek jelennek meg. Így néznek ki az AZD-kimenetben:App Service app has the following app settings: - AZURE_COSMOS_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE
AZURE_COSMOS_CONNECTIONSTRING
tartalmazza az Azure-beli Cosmos DB-adatbázishoz kapcsolati sztring. Később használnia kell a kódban.Az ÖN kényelme érdekében az AZD-sablon az alkalmazás alkalmazásbeállítási oldalára mutató közvetlen hivatkozást jeleníti meg. Keresse meg a hivatkozást, és nyissa meg egy új böngészőlapon.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
4. Mintakód módosítása és ismételt üzembe helyezés
A GitHub-kódtérben indítsa el az új csevegési munkamenetet a Csevegés nézetre kattintva, majd kattintson +a gombra.
Kérdezze meg a következőt: "@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz?" A Copilot a app.js fájlra és a hívásra
mongoose.connect
irányíthatja.Mondja el a következőt: "Van egy kapcsolati sztring változóm az Azure-ban AZURE_COSMOS_CONNECTIONSTRING." Előfordulhat, hogy a Copilot a 2. lehetőséghez hasonló kódjavaslatot ad: a GitHub Copilot alábbi lépései nélkül, és még azt is megmondhatja, hogy végezze el a módosítást a app.js.
Nyissa meg a app.js a kezelőben, és adja hozzá a kódjavaslatot a
getApp
metódushoz.A GitHub Copilot nem minden alkalommal ad ugyanazt a választ, előfordulhat, hogy további kérdéseket kell feltennie a válasz finomhangolásához. Tippekért lásd: Mit tehetek a GitHub Copilottal a kódtérben?
Futtassa
azd deploy
a kódot a kódtér termináljában.azd deploy
Tipp.
Azt is használhatja azd up
, hogy mindig, ami nem az összes azd package
, azd provision
és azd deploy
.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
5. Tallózás az alkalmazáshoz
Az AZD-kimenetben keresse meg az alkalmazás URL-címét, és keresse meg a böngészőben. Az URL-cím így néz ki az AZD-kimenetben:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
Adjon hozzá néhány feladatot a listához.
Gratulálunk, egy webalkalmazást futtat a Azure-alkalmazás Service-ben, biztonságos kapcsolattal az Azure Cosmos DB-vel.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
6. Diagnosztikai naplók streamelése
Azure-alkalmazás szolgáltatás rögzíti a konzolra naplózott összes üzenetet, hogy segítsen az alkalmazással kapcsolatos problémák diagnosztizálásában. A mintaalkalmazás minden végpontján konzolnapló-üzeneteket ad ki, hogy bemutassuk ezt a képességet. A végpont például üzenetet küld az adatbázisból lekért feladatok számáról, get
és hibaüzenet jelenik meg, ha valami hiba történik.
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.');
});
});
Az AZD-kimenetben keresse meg az App Service-naplók streameléséhez és a böngészőben való navigáláshoz használt hivatkozást. A hivatkozás így néz ki az AZD-kimenetben:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
További információ a Java-alkalmazásokban való naplózásról az Azure Monitor OpenTelemetry engedélyezése .NET-, Node.js-, Python- és Java-alkalmazásokhoz című sorozatban.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
7. Erőforrások törlése
Ha törölni szeretné az összes Azure-erőforrást az aktuális üzemi környezetben, futtassa azd down
és kövesse az utasításokat.
azd down
Hibaelhárítás
- Az Azure Cosmos DB portál üzembehelyezési nézete ütközési állapotot jelenít meg
- Az üzembe helyezett alkalmazás böngészőoldalán az áll, hogy "Valami hiba történt".
Az Azure Cosmos DB portál üzembehelyezési nézete ütközési állapotot jelenít meg
Az előfizetéstől és a kiválasztott régiótól függően előfordulhat, hogy az Azure Cosmos DB üzembe helyezési állapota jelenik Conflict
meg, a művelet részleteiben az alábbi üzenettel:
Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.
A hibát valószínűleg a kiválasztott régióra vonatkozó előfizetés korlátja okozza. Próbáljon meg másik régiót választani az üzembe helyezéshez.
Az üzembe helyezett alkalmazás böngészőoldalán az áll, hogy "Valami hiba történt".
Az alkalmazáskódban valószínűleg még mindig módosítania kell a kapcsolati sztring. Lásd: 4. Mintakód üzembe helyezése.
Gyakori kérdések
- Mennyibe kerül ez a beállítás?
- Hogyan csatlakozni a virtuális hálózat mögött más eszközökkel védett Azure Cosmos DB-kiszolgálóhoz?
- Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?
- Miért olyan lassú a GitHub Actions üzembe helyezése?
- Nincs jogosultságom felhasználó által hozzárendelt identitás létrehozására
- Mit tehetek a GitHub Copilottal a kódtérben?
Mennyibe kerül ez a beállítás?
A létrehozott erőforrások díjszabása a következő:
- Az App Service-csomag alapszinten jön létre, és fel- vagy leskálázható. Lásd az App Service díjszabását.
- Az Azure Cosmos DB-kiszolgáló egyetlen régióban jön létre, és más régiókba is terjeszthető. Tekintse meg az Azure Cosmos DB díjszabását.
- A virtuális hálózat csak akkor számít fel díjat, ha nem konfigurál további funkciókat, például társviszony-létesítést. Tekintse meg az Azure Virtual Network díjszabását.
- A privát DNS-zóna kis díjat számít fel. Tekintse meg az Azure DNS díjszabását.
Hogyan csatlakozni a virtuális hálózat mögött más eszközökkel védett Azure Cosmos DB-kiszolgálóhoz?
- A parancssori eszközről való alapszintű hozzáféréshez az alkalmazás SSH-termináljáról is futtatható
mongosh
. Az alkalmazás tárolója nem találhatómongosh
meg, ezért manuálisan kell telepítenie. Ne feledje, hogy a telepített ügyfél nem marad fenn az alkalmazás újraindítása során. - MongoDB GUI-ügyfélről való csatlakozáshoz a gépnek a virtuális hálózaton belül kell lennie. Ez lehet például egy Azure-beli virtuális gép, amely az egyik alhálózathoz csatlakozik, vagy egy helyszíni hálózat egy olyan gépe, amely helyek közötti VPN-kapcsolattal rendelkezik az Azure-beli virtuális hálózattal.
- Ha a MongoDB-rendszerhéjból szeretne csatlakozni a portál Azure Cosmos DB felügyeleti oldaláról, a gépnek a virtuális hálózaton belül kell lennie. Ehelyett megnyithatja az Azure Cosmos DB-kiszolgáló tűzfalát a helyi gép IP-címéhez, de növeli a konfiguráció támadási felületét.
Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?
Vegyük példaként az App Service automatikusan létrehozott munkafolyamat-fájlját, és mindegyik git push
elindít egy új buildet és üzembe helyezést. A GitHub-adattár helyi klónjából a kívánt frissítéseket leküldheti a GitHubra. Példa:
git add .
git commit -m "<some-message>"
git push origin main
Miért olyan lassú a GitHub Actions üzembe helyezése?
Az App Service automatikusan létrehozott munkafolyamat-fájlja a build-then-deploy, kétfeladatos futtatás definícióját határozza meg. Mivel minden feladat a saját tiszta környezetében fut, a munkafolyamat-fájl biztosítja, hogy a deploy
feladat hozzáférhessen a build
feladat fájljaihoz:
- A feladat végén töltse fel a
build
fájlokat összetevőként. - A feladat elején
deploy
töltse le az összetevőket.
A kétfeladatos folyamat legtöbbször az összetevők feltöltésével és letöltésével foglalkozik. Ha szeretné, egyszerűsítheti a munkafolyamat-fájlt a két feladat egybe egyesítésével, ami szükségtelenné teszi a feltöltési és letöltési lépéseket.
Nincs jogosultságom felhasználó által hozzárendelt identitás létrehozására
Lásd: A GitHub Actions üzembe helyezésének beállítása az üzembe helyezési központból.
Mit tehetek a GitHub Copilottal a kódtérben?
Észreveheti, hogy a GitHub Copilot csevegőnézete már ott volt a kódtér létrehozásakor. Az Ön kényelme érdekében a GitHub Copilot csevegőbővítményt is belefoglaljuk a tárolódefinícióba (lásd: .devcontainer/devcontainer.json). Azonban szüksége van egy GitHub Copilot-fiókra (30 napos ingyenes próbaverzió érhető el).
Néhány tipp a GitHub Copilot használatához:
- Egyetlen csevegési munkamenetben a kérdések és válaszok egymásra épülnek, és módosíthatja a kérdéseket, hogy finomhangolja a választ.
- Alapértelmezés szerint a GitHub Copilot nem rendelkezik hozzáféréssel az adattárban lévő fájlokhoz. Ha fel szeretne kérdezni egy fájlt, először nyissa meg a fájlt a szerkesztőben.
- Ha azt szeretné, hogy a GitHub Copilot hozzáférhessen az adattárban lévő összes fájlhoz a válaszok előkészítésekor, kezdje a kérdést a következővel
@workspace
: . További információ: Use the @workspace agent. - A csevegési munkamenetben a GitHub Copilot javasolhat módosításokat, és (azokkal együtt
@workspace
) még azt is, hogy hol végezze el a módosításokat, de önnek nem engedélyezett a módosítások végrehajtása. Önnek kell hozzáadnia a javasolt módosításokat, és tesztelnie kell azt.
Íme néhány más dolog, amit mondhat a válasz finomhangolásához:
- @workspace Hol van definiálva MONGODB_URI?
- Melyik fájlban végezzem el a módosítást?
- Ez a módosítás megszakítja az alkalmazást helyi futtatáskor?