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).

A létrehozott alkalmazás egy triviális kapcsolatkezelő alkalmazás, amely a CRUD-műveleteket listázási stílusarchitektúrával tartalmazza.

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. Ennek az írásnak Claude Sonnet 4 az idején a legjobb eredményeket adja. 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 a Visual Studio Code-ot.

    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 a 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 kapja, ha kisebb lépésekben hajt végre néhány feladatot. 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 és <db-username> cserélje le <password> a kívánt adatbázis-felhasználónevet és jelszót.

  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

    Cserélje le <username> a Windows-felhasználónevét.

    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 <db-username> a fájlban lévő adatbázisnév-szegmensre pgpass.conf .

    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 útmutatást és útmutatást ad az alkalmazás helyi számítógépen való létrehozásához és teszteléséhez.

  1. A Visual Studio Code-ban a címsorBan található Csevegés váltása gombbal nyissa meg a Csevegő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. Ennek az írásnak Claude Sonnet 4 az idején a legjobb eredményeket adja. 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 önállóan is választhatja ezeket a lehetőségeket, de explicit módon a folyamat zökkenőmentessé válik.
    • Explicit elvárások, hogy azt szeretné, hogy a lehető legtöbb munkát önállóan. Ellenkező esetben előfordulhat, hogy a GitHub Copilot útmutatást ad önnek.
    • Explicit elvárások az utasításokhoz / környezethez. Ha más műveletek végrehajtására van szüksége, útmutatással és útmutatással beállíthatja a szükséges elvárást, hogy segítsen Önnek.

    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ójelekben szereplő értékeket, például <resource-group-name><region-name> másolhatja és beillesztheti a 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:

  • A használni kívánt szolgáltatások. 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 választ a szükséges beállításokra, például a környezet nevére a következőhöz azd:
  • Explicit elvárások, hogy azt szeretné, hogy annyi munkát saját maga. Ellenkező esetben előfordulhat, hogy útmutatást ad az Ön számára.
  • 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. Bízik abban, hogy az Azure-hoz készült GitHub Copilot tisztában van a feladattal, és a tervek szerint végrehajtja azt.

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.

Interakció 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.

Amíg működik, megtekintheti és elfogadhatja a gomb használatával feltett kérdések többségét Continue .

Fontos

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

Időnként meg kell adnia a bemenetet. 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.

Ha kontextust szeretne adni az imént történteknek, és el szeretné helyezni egy lehetséges megoldás felé, azonnal felvehet egy parancssort a GitHub Copilot megszakítása után, például:

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.

Következő lépések