Django- és PostgreSQL-alkalmazás létrehozása és üzembe helyezése az Azure-ban

Ez a cikk bemutatja, hogyan használhatja a GitHub Copilotot egy helyi Django-webalkalmazás létrehozására, amely CRUD-műveleteket végez egy PostgreSQL-adatbázisban. A következő lépésben bemutatja, hogyan használhatja az Azure-hoz készült GitHub Copilot a webalkalmazás és az adatbázis Azure App Service-ben és rugalmas Azure PostgreSQL-kiszolgálón való üzembe helyezéséhez (valamint számos támogató Azure-szolgáltatáshoz).

Az elkészített alkalmazás egy egyszerű névjegykezelő alkalmazás, amely CRUD-műveleteket valósít meg lista-részletező felépítésben.

Megjegyzés:

Ha nagy nyelvi modellt (LLM) használ egy alkalmazás létrehozásához, az inkonzisztens eredményeket eredményezhet. Az eredmények az LLM-modelltől, az utasításoktól és egyebektől függnek. Az útmutató célja, hogy segítsen megérteni, hogyan érhet el jobb eredményeket. Azonban minden alkalommal, amikor végighalad ezen a példán, (potenciálisan) jelentősen eltérő eredményeket kap.

Előfeltételek

Fontos

A GitHub Copilot egy külön, a GitHub által felügyelt előfizetés. A GitHub Copilot-előfizetésekkel és -támogatással kapcsolatos kérdésekért tekintse meg a GitHub Copilot-csomag használatának első lépéseit.

A csevegés előkészítése

  1. A Visual Studio Code-ban használja a Csevegés váltása gombot a címsorban, vagy válassza a CtrlAlt+i+ a Csevegés ablak megnyitásához. Az Új csevegés ikonnal hozzon létre egy új csevegési munkamenetet.

  2. A csevegési területen válassza ki Agent a módot. E sorok írásakor a Claude Sonnet 4 adja a legjobb eredményeket. Használja a kódgeneráláshoz elérhető legjobb modellt.

A konfiguráció ellenőrzése

Győződjön meg arról, hogy a CLI-eszközök és a Visual Studio Code frissülnek, megfelelően vannak konfigurálva és megfelelően működnek az eredmények javítása érdekében.

  1. Egy új csevegésben adja meg a következő üzenetet:

    I want to create a new Django website that stores data in PostgreSQL. Then, I'll want
    to deploy that new website to Azure. Do I have everything installed on my local
    computer that you will need to perform these tasks?
    

    A GitHub Copilot engedélyt kér egy sor parancssori ellenőrzés futtatására, hogy meggyőződjön arról, hogy rendelkezik az eszközökkel, valamint az eszközök legfrissebb verzióival.

  2. A terminálban frissítse az Azure CLI-t a paranccsal az --upgrade.

  3. A terminálon telepítse a szolgáltatás-összekötő jelszó nélküli bővítményét az Azure CLI-hez a paranccsal az extension add --name serviceconnector-passwordless --upgrade

  4. A Visual Studio Code-ban állítsa az alapértelmezett terminált Git Bashre. Lépjen a Fájlbeállítások >> beállításai elemre, majd a "Keresési beállítások" mezőbe írja be az "Alapértelmezett profil: Windows" kifejezést, és válassza a "Git Bash" lehetőséget. Előfordulhat, hogy a beállítás érvénybe lépéséhez újra kell indítania Visual Studio Code.

    Megjegyzés:

    A Git Bash használata nem feltétlenül szükséges, de az írás időpontjában a legjobb eredményt adja.

  5. A Visual Studio Code-ban használja a PostgreSQL for Visual Studio Code (előzetes verzió) bővítményt, és keresse meg az adatbázist contacts .

  6. A Visual Studio Code-ban használja az Azure-bővítményt, és győződjön meg arról, hogy bejelentkezett az Azure-fiókjába és előfizetésébe. Amikor megnyitja az Azure-bővítményt az elsődleges oldalsávon, meg kell tudnia tekinteni a meglévő előfizetéseket és erőforrásokat.

  7. Hozzon létre egy új mappát az új alkalmazásfájlokhoz, és nyissa meg a Visual Studio Code-ban munkaterületként.

A helyi adatbázis beállítása

Bár GitHub Copilot gyakorlatilag bármilyen alkalmazásfejlesztési feladatot képes elvégezni, amelyet a fejlesztők általában végrehajtanak, a legjobb eredményt akkor érheti el, ha kisebb lépésekben hajt végre bizonyos feladatokat. Az eredmények javítása érdekében hozza létre az adatbázist, és állítsa be a hitelesítést és az engedélyezést a GitHub Copilot használata előtt.

  1. Hozzon létre egy új csevegést, és használja a következő parancssort:

    On my PostgreSQL server localhost, please create a new database named 'contacts'.
    
    Then create a new user <db-username> with password `<password>` and give that
    user full rights (create tables and other db objects, CRUD data) to the new
    contacts database.
    
    Please do the work, and only prompt me when you are unable to do it yourself.
    

    Cserélje le a(z) <db-username> és <password> elemeket a kívánt adatbázis-felhasználónévre, illetve jelszóra.

  2. Windows rendszerű gépeken ajánlott biztonsági ajánlott eljárás az adatbázis felhasználóneve és jelszava egy helyi fájlban való tárolása:

    %APPDATA%\postgresql\pgpass.conf

    Ez általában a következő helyet oldja fel a merevlemezen:

    c:\Users\<username>\AppSettings\Roaming\postgresql\pgpass.conf

    Helyettesítse a(z) <username> elemet a Windows-felhasználónevével.

    A fájlnak a következő formátumot kell használnia:

    localhost:5432:<database-name>:<database-user>:<password>
    

    Ez feltételezi, hogy a PostgreSQL egy példányával dolgozik a helyi számítógépen, és az alapértelmezett porton (5432) van üzemeltetve.

    <database-name> Cserélje le contacts és cserélje le <db-username><password> az előző lépésben használt hitelesítő adatokat.

    A fájlról további információt a pgpass.confPostgreSQL dokumentációjában talál.

  3. Adja hozzá a fájl elérési útját a pgpass.conf PATH környezeti változóhoz.

  4. Tesztelje a kapcsolatot, hogy biztosan működjön. A psql CLI használatával tesztelje a következő paranccsal:

    psql -h localhost -U <db-username> -d contacts
    

    Cserélje le a(z) <db-username> elemet a(z) pgpass.conf fájlban található adatbázis-felhasználónév szegmensre.

    Ha a pgpass.conf beállítás nincs megfelelően beállítva, megjelenik egy kérés, hogy írja be a jelszavát.

Alkalmazás létrehozása a GitHub Copilot használatával

Először utasításokat és útmutatást ad az alkalmazás helyi számítógépén történő létrehozásához és teszteléséhez.

  1. A Visual Studio Code-ban a címsorban található Csevegés kapcsolása gombbal nyissa meg a Csevegés ablakot. Az Új csevegés ikonnal hozzon létre egy új csevegési munkamenetet.

  2. A csevegési területen válassza ki Agent a módot. E sorok írásakor a Claude Sonnet 4 adja a legjobb eredményeket. Használja a kódgeneráláshoz elérhető legjobb modellt.

  3. Az alkalmazáslétrehozás megkezdéséhez használja a következő parancssort:

    I want you to create a simple Contact Manager application using Django and PostgreSQL.
    
    This should be a CRUD application, so create web pages that display a list of
    contacts, view details, add a new contact, edit or delete a contact. Each Contact
    is comprised of a contact's Name, Address, and Phone number. Since this is a
    Python / Django project please make sure to work inside of a virtual environment (venv).
    I've already created a PostgreSQL database at `localhost` named `contacts`. There are
    no tables yet. For local development in PostgreSQL, I'm using a `pgpass.conf` file
    and I have tested that it works. Prefer Git Bash in the terminal. Beyond that, if there's
    anything I need to do, please include instructions. But I want you to do as much as
    you can on your own.
    

    A parancssor a következő funkciókkal rendelkezik:

    • A létrehozni kívánt alkalmazás típusa. Ebben az esetben egy kapcsolatkezelő alkalmazás.
    • A használni kívánt technológiák. Ebben az esetben a Django és a PostgreSQL.
    • A létrehozni kívánt webhelyarchitektúra. Ebben az esetben egy CRUD stílusú alkalmazás, amely egy olyan oldalt tartalmaz, amely felsorolja az összes partnert, és lehetővé teszi egy adott partner részletezését.
    • További részletek a problémás tartományról. Ebben az esetben meg kell adnia az alkalmazás által kezelni kívánt adatok mezőit, beleértve a partner nevét, címét és telefonszámát.
    • Az adatbázisra vonatkozó konkrét utasítások. Ebben az esetben utasítja a GitHub Copilot, hogy használjon egy már létrehozott adatbázist, adja meg az adatbázis állapotát és az interakció módját
    • A környezettel kapcsolatos konkrét utasítások. Ebben az esetben arra utasítja, hogy használja a Git Basht. Azt is megmondhatja, hogy a munkát Python-környezetben (venv) szeretné elvégezni, ami ajánlott eljárás. A GitHub Copilot akár maga is kiválaszthatja ezeket a lehetőségeket, de ha ezt kifejezetten megadjuk, a folyamat gördülékenyebbé válik.
    • Egyértelmű elvárások arra vonatkozóan, hogy azt szeretné, hogy az a lehető legtöbb munkát önállóan végezze el. Ellenkező esetben előfordulhat, hogy a GitHub Copilot útmutatást ad önnek.
    • Explicit elvárások az utasításokhoz / környezethez. Ha azt szeretné, hogy más műveleteket is végrehajtson, azzal teremti meg ezt az elvárást, hogy utasításokat és útmutatást ad neki, hogy segítségére legyen.

    Fontos

    Amikor a GitHub Copilot a terminált használja egy új virtuális környezet létrehozásához, a Visual Studio Code észleli az venv eszközt, és megjelenít egy párbeszédpanelt, amely megkérdezi, hogy szeretné-e használni. Hagyja figyelmen kívül ezt a párbeszédpanelt. El is múlik. A GitHub Copilot kizárólag ehhez a művelethez használhatja a terminált.

    A GitHub Copilot a beépített terminált és a Visual Studio Code-környezetet használja a következő célokra:

    • Python virtuális környezet létrehozása
    • Kódtárak és egyéb függőségek telepítése
    • Kódfájlok létrehozása
    • Adatbázistáblák létrehozása
    • Olvasási fájlok létrehozása további utasításokhoz
    • Tesztadatok létrehozása
    • Helyi webkiszolgáló indítása
    • A webhely tesztelése (a Simple Browser vagy a curl használatával)

    Az LLM-eknek a kód generálása miatt az általa használt parancsok és az általuk előállított parancsok minden alkalommal eltérőek.

Üzembe helyezés az Azure-ban az Azure-hoz készült GitHub Copilottal

Miután a GitHub Copilot helyileg létrehozta a webhelyet, kérni fogja a GitHub Copilotot, hogy módosítsa a helyet az üzembe helyezés előkészítésekor, majd végezze el az üzembe helyezést. Az Azure-hoz készült GitHub Copilot bővítmény úgy kezeli ezt a kérést, hogy Bicep-fájlokat hoz létre, majd futtatja ezeket a fájlokat a parancssori azd felület használatával.

Használja a következő parancssort... másolhat a Jegyzettömbbe, és módosíthatja a szögletes zárójelek (például <resource-group-name> és <region-name>) értékét, majd másolja és illessze be GitHub Copilot csevegésbe:

Please help me deploy this Django app to Azure.

First, create and use a Resource Group named "<resource-group-name>" in the "<region-name>" region.

Second, create an Azure App Service for the Django app in the new "<resource-group-name>" in the "<region-name>" region.

Third, create a new Azure Database for PostgreSQL flexible server named "<server-name>" in a resource group named "<resource-group-name>" in my subscription "<subscription-id>". Use my current account ("<account-id>") as the Microsoft Entra administrator. For the PostgreSQL "Administrator login", use "<azure-database-username>" and password "<azure-database-password>". Use a "development" class database configuration in the "<region-name>" region. Create a new database named "contact_manager_db" and migrate all tables and data from the local version of "contact_manager_db". The local database uses the username "<local-database-username>" and password "<local-database-password>". Add my IP address as a firewall rule, allow public access to this resource through the internet using a public IP address, and allow public access from any Azure service within Azure to this server.

Fourth, use Service Connector (and any other services you need to make this configuration work successfully) to connect the web app to the database. You may need to modify the application code to accommodate Service Connector. Also, please ensure a secure connection between the Azure App Service web site and the Azure PostgreSQL Flexible Server.

Please choose the least expensive options.

If you are prompted for an environment, use the name "contacts-env". Configure my firewall to allow my IP address. Beyond that, if there's anything
I need to do, please include instructions. But I want you to do as much as you can on your own.

Before you start:

- Do you have any questions that need to be clarified?
- Please create a plan for deployment in the form of a TODO list, and then update the TODO list as you progress. Do not start until I have a chance to review your plan and tell you to proceed.

A parancssor a következő funkciókkal rendelkezik:

  • Azon szolgáltatások, amelyeket használni szeretne. Ebben az esetben azt fogja mondani, hogy az Azure App Service-t, a rugalmas Azure PostgreSQL-kiszolgálót és a Service Connectort szeretné használni. Azt is utasítást ad neki, hogy "csináljon bármi mást, amit meg kell tennie" annak biztosítása érdekében, hogy működjön.
  • Adott szolgáltatásbeállítások. Ebben az esetben azt jelzi, hogy az egyes szolgáltatásokhoz a lehető legkevésbé költséges lehetőséget szeretné használni.
  • Tipp a valószínű következő lépésekre. Ebben az esetben javasoljuk, hogy a Service Connector használatához valamilyen kódmódosításra van szükség.
  • Előre várhatja a döntéseket. Ebben az esetben megadja a szükséges beállításokhoz tartozó értékeket, például a(z) azd számára megadott környezetnevet,
  • Egyértelmű elvárások arra vonatkozóan, hogy azt szeretné, hogy önállóan a lehető legtöbb munkát végezze el. Ellenkező esetben előfordulhat, hogy az Ön számára követendő utasításokat ad.
  • Explicit elvárások az utasításokhoz / környezethez. Adja meg az elvárást, hogy segítségre és útmutatásra van szüksége, amikor a rendszer cselekvésre kéri.
  • Megkérdezi, hogy szükség van-e pontosításra. Ez gyakran olyan lehetséges problémákat fed fel, mint a peremhálózati esetek vagy a nem egyértelmű utasítások.
  • TODO-listával rendelkező tervet kér. Bizalmat ad afelől, hogy a GitHub Copilot for Azure megérti a feladatot, és az Ön szándékainak megfelelően tervezi annak végrehajtását.

A GitHub Copilot a beépített terminált és a Visual Studio Code-környezetet használja a következő célokra:

  • A kódfájlok frissítése a Service Connector elhelyezésére
  • Bicep-fájlok létrehozása
  • A parancssori felület azd futtatása
  • Az üzembe helyezés tesztelése
  • Ha szükséges, végezzen hibakeresést az üzembe helyezés során naplók vagy egyéb kimenetek segítségével.

Lépjen kapcsolatba a GitHub Copilottal

A GitHub Copilot több feladat végrehajtása előtt igényli a bemenetet. A bemenet szüneteltetése lehetőséget ad arra, hogy a GitHub Copilotot a hibák megelőzése vagy a létrehozott kimenet testreszabása érdekében a helyes pályára irányítsa.

Miközben működik, a Continue gombbal megtekintheti, és a legtöbb feltett kérdésre igennel válaszolhat.

Fontos

Ha váratlan eredményeket kap, indítsa újra egy új csevegési munkamenet használatával.

Időnként meg kell adnia bizonyos adatokat. Néhány különböző pillanat, amikor a rendszer kéri a bemenetet:

  • Felhasználói hitelesítő adatok – Ha a terminál aktuális műveletéhez felhasználónév vagy jelszó szükséges, a rendszer kérni fogja ezeket az információkat.
  • Döntési pillanat – A GitHub Copilot időnként több lehetőséget is kínál egy listában, és megkérdezi, hogy melyiket szeretné.
  • A Parancskatalógus – A GitHub Copilot esetenként egy bővítmény funkcióit használja, és a beállítások megjelennek a parancskatalógusban. Miután kiválasztotta a megfelelő beállításokat, a GitHub Copilot folytatja.
  • Interaktív bejelentkezés – Az Azure CLI-nek és azd a parancssori felületnek hitelesítenie kell magát, és számos hitelesítési mechanizmus egyikét kezdeményezi.

Módosítások tesztelése és kérése

Amikor a GitHub Copilot befejeződik, lehetséges, hogy teljesnek és működőképesnek tekinti a webhelyet. Előfordulhat azonban, hogy a tesztelés problémákat vagy váratlan/ nemkívánatos alkalmazásfunkciókat észlel.

Használjon olyan utasításokat, amelyek a lehető legrészletesebben írják le a problémát. Ha például az alkalmazás nem működik, adja meg a lehető legtöbb információt, beleértve a pontos hibaüzenetet és a várt eredményt.

A folyamat megszakítása

Időnként észreveheti, hogy a GitHub Copilot vagy elakadt egy hurokban, amely megkísérli megismételni ugyanazokat a feladatokat, vagy elakad egy olyan folyamatban, amely soha nem tér vissza. A webhely problémáinak diagnosztizálásakor például előfordulhat, hogy a GitHub Copilot a következő parancsokat szeretné futtatni:

az webapp log tail

Ha a GitHub Copilot elakad, több módon is megszakíthatja a GitHub Copilotot:

  • Ctrl+C
  • A szüneteltetés gomb használata a csevegésben
  • A csevegés befejezése és új csevegés indítása

Fontos

A csevegési munkamenet befejezése megsemmisíti a munkamenet során létrehozott összes környezetet, ami lehet, hogy nem kívánatos.

Hogy a GitHub Copilot számára kontextust adjon az imént történtekhez, és egy lehetséges megoldás irányába terelje, közvetlenül a GitHub Copilot megszakítása után hozzáadhat egy utasítást, például a következőt:

You were just getting the logs from Azure App Service but it did not return
so you got stuck. Try to interrupt after a minute once you get what you need
from the logs.