A Python Container Apps áttekintése az Azure-ban

Ez a cikk bemutatja, hogyan helyezhet üzembe egy Python-projektet – például egy webalkalmazást –, és hogyan helyezheti üzembe Docker-tárolóként az Azure-ban. Ez az általános tárolókonfigurációs munkafolyamatot, a tárolók Azure-beli üzembehelyezési lehetőségeit és az Azure-on belüli Python-specifikus tárolókonfigurációkat ismerteti. A Docker-tárolók azure-beli létrehozása és üzembe helyezése a különböző nyelvekre kiterjedő szabványos folyamatot követ, a Dockerfile python-specifikus konfigurációival, requirements.txtés olyan webes keretrendszerek beállításaival, mint a Django, a Flask és a FastAPI.

Konténer munkafolyamat-forgatókönyvek

A Python tárolófejlesztéshez az alábbi táblázat a kódról tárolóra való áttérés néhány tipikus munkafolyamatát ismerteti.

Forgatókönyv Leírás Workflow
Dev Python Docker-rendszerképeket helyileg hozhat létre a fejlesztői környezetben. Kód: Az alkalmazás kódját helyileg klónozza a Git használatával (a Docker telepítve van).

Build: Docker CLI, VS Code (bővítményekkel), PyCharm (Docker beépülő modullal). A Python Docker-rendszerképek és -tárolók használata című szakaszban leírtak.

Teszt: Futtassa és tesztelje a konténert helyileg.

Leküldés: A rendszerkép leküldése egy tárolóregisztrációs adatbázisba, például az Azure Container Registrybe, a Docker Hubba vagy a magánregisztrációs adatbázisba.

Üzembe helyezés: Helyezze üzembe a tárolót a beállításjegyzékből egy Azure-szolgáltatásban.
Hibrid Docker-rendszerképeket hozhat létre az Azure-ban, de kezdeményezheti a folyamatot a helyi környezetből. Kód: Klónozza a kódot helyileg (a Docker telepítéséhez nem szükséges).

Build: Az Azure-beli buildek aktiválásához használja a VS Code-ot (távoli bővítményekkel) vagy az Azure CLI-t.

Feltöltés: A beépített rendszerkép feltöltése az Azure Container Registrybe.

Üzembe helyezés: Helyezze üzembe a tárolót a beállításjegyzékből egy Azure-szolgáltatásban.
Kék Az Azure Cloud Shell használatával teljes mértékben a felhőben hozhat létre és helyezhet üzembe tárolókat. Kód: Klónozza a GitHub-adattárat az Azure Cloud Shellben.

Build: Az Azure CLI vagy a Docker CLI használata a Cloud Shellben.

Leküldés: A rendszerkép leküldése egy olyan beállításjegyzékbe, mint az Azure Container Registry, a Docker Hub vagy a privát beállításjegyzék.

Üzembe helyezés: Helyezze üzembe a tárolót a beállításjegyzékből egy Azure-szolgáltatásban.

Ezeknek a munkafolyamatoknak a célja, hogy egy tároló futjon az egyik Azure olyan erőforrásban, amely támogatja a Docker-tárolókat a következő szakaszban felsoroltak szerint.

A fejlesztői környezet a következő lehet:

  • Helyi munkaállomása a Visual Studio Code-dal vagy a PyCharm-mal.
  • Kódterek (a felhőben üzemeltetett fejlesztési környezet)
  • Visual Studio Dev Containers (tároló fejlesztési környezetként)

Üzembehelyezési tároló beállításai az Azure-ban

A Python-tárolóalkalmazások a következő szolgáltatásokban támogatottak.

Szolgáltatás Leírás
Webalkalmazás konténerekhez Az Azure App Service egy teljes körűen felügyelt üzemeltetési platform tárolóalapú webalkalmazásokhoz, beleértve a webhelyeket és a webes API-kat. Támogatja a méretezhető üzembe helyezéseket, és zökkenőmentesen integrálható a CI/CD-munkafolyamatokkal a Docker Hub, az Azure Container Registry és a GitHub használatával. Ez a szolgáltatás ideális azoknak a fejlesztőknek, akik egyszerű és hatékony megoldást szeretnének a tárolóalapú alkalmazások üzembe helyezésére, ugyanakkor kihasználják az Azure App Service platform teljes képességeit. Ha az alkalmazást és annak minden függőségét egyetlen üzembe helyezhető tárolóba csomagolja, hordozhatóságot és könnyű kezelhetőséget érhet el – az infrastruktúra kezelése nélkül.

Példa: Flask- vagy FastAPI-webalkalmazás üzembe helyezése az Azure App Service-ben.
Azure Container Apps (ACA) Az Azure Container Apps (ACA) egy kubernetes és nyílt forráskódú technológiák, például a Dapr, a KEDA és a megbízott által üzemeltetett, teljes körűen felügyelt kiszolgáló nélküli tárolószolgáltatás. Kialakítása iparági ajánlott eljárásokat tartalmaz, és általános célú tárolók végrehajtására van optimalizálva. Az ACA elvonja a Kubernetes-infrastruktúra kezelésének összetettségét – a Kubernetes API-hoz való közvetlen hozzáférés nem szükséges vagy támogatott. Ehelyett magasabb szintű alkalmazásszerkezeteket, például változatokat, skálázást, tanúsítványokat és környezeteket kínál a fejlesztési és üzembehelyezési munkafolyamatok egyszerűsítése érdekében. Ez a szolgáltatás ideális olyan fejlesztői csapatok számára, akik minimális üzemeltetési többletterheléssel szeretnének tárolóalapú mikroszolgáltatásokat létrehozni és üzembe helyezni, így az infrastruktúra-felügyelet helyett az alkalmazáslogikára összpontosíthatnak.

Example: A Flask- vagy FastAPI-webalkalmazás üzembe helyezése Azure Container Apps.
Azure Container Instances (ACI) Az Azure Container Instances (ACI) egy kiszolgáló nélküli ajánlat, amely igény szerint Hyper-V elkülönített tárolók egyetlen podját biztosítja. A számlázás az előre kiosztott infrastruktúra helyett a tényleges erőforrás-használaton alapul, így jól használható rövid élettartamú vagy kipukkasztható számítási feladatokhoz. Más tárolószolgáltatásoktól eltérően az ACI nem nyújt beépített támogatást olyan fogalmakhoz, mint a skálázás, a terheléselosztás vagy a TLS-tanúsítványok. Ehelyett általában alapszintű tároló építőelemként működik, amely gyakran integrálva van olyan Azure-szolgáltatásokkal, mint az Azure Kubernetes Service (AKS) a vezényléshez. Az ACI egyszerű választás, ha az Azure Container Apps magasabb szintű absztrakcióira és funkcióira nincs szükség

, például: Tárolórendszerkép létrehozása az Azure Container Instancesben való üzembe helyezéshez. (Az oktatóanyag nem Python-specifikus, de a megjelenített fogalmak minden nyelvre érvényesek.)
Azure Kubernetes Service (AKS) Az Azure Kubernetes Service (AKS) egy teljes körűen felügyelt Kubernetes-lehetőség az Azure-ban, amely teljes körű vezérlést biztosít a Kubernetes-környezet felett. Támogatja a Kubernetes API közvetlen elérését, és bármilyen szabványos Kubernetes-számítási feladatot futtathat. A teljes fürt az előfizetésében található, és a fürtkonfigurációk és a műveletek az Ön felügyelete és felelőssége alá tartoznak. Az AKS ideális olyan csapatok számára, amelyek részletes vezérlést igényelnek a tárolóalapú alkalmazások skálázása, hálózatkezelése és üzembe helyezése felett. Az Azure kezeli a vezérlősíkot és az infrastruktúra kiépítését, de a fürt napi működése és biztonsága a csapat irányítása alatt áll. Ez a szolgáltatás ideális azoknak a csapatoknak, amelyek a Kubernetes rugalmasságát és teljesítményét szeretnék kihasználni Azure felügyelt infrastruktúrájának további előnyeivel, miközben továbbra is teljes tulajdonjogot élveznek a fürtkörnyezet felett.

Példa: Azure Kubernetes Service-fürt üzembe helyezése az Azure CLI használatával.
Azure Functions Az Azure Functions egy eseményvezérelt, kiszolgáló nélküli Szolgáltatásként (FaaS) platformot kínál, amely lehetővé teszi, hogy kisebb kódrészleteket (függvényeket) futtasson eseményekre válaszul – az infrastruktúra kezelése nélkül. Az Azure Functions számos jellemzőt oszt meg az Azure Container Appsszel a skálázás és az eseményekkel való integráció körül, de kódként vagy tárolóként üzembe helyezett rövid élettartamú függvényekhez van optimalizálva. Ideális olyan csapatok számára, amelyek eseményekkel kapcsolatos függvények végrehajtását szeretnék aktiválni; például más adatforrásokhoz való kötéshez. Az Azure Container Appshez hasonlóan az Azure Functions is támogatja az automatikus skálázást és az eseményforrásokkal való integrációt (például HTTP-kéréseket, üzenetsorokat vagy blobtároló-frissítéseket). Ez a szolgáltatás ideális olyan csapatok számára, amely egyszerűsített, eseményvezérelt munkafolyamatokat hoz létre, például fájlfeltöltéseket dolgoz fel vagy válaszol az adatbázis változásaira Pythonban vagy más nyelveken.

Példa: Függvény létrehozása Linuxon egyéni tároló használatával.

A szolgáltatások részletesebb összehasonlításáért lásd a Container Apps és más Azure-tárolóbeállítások összehasonlítása című témakört.

Virtuális környezetek és tárolók

A Python virtuális környezetei elkülönítik a projektfüggőségeket a rendszerszintű Python-telepítésektől, biztosítva a fejlesztési környezetek konzisztenciáját. A virtuális környezet magában foglalja a saját izolált Python-értelmezőjét, valamint azokat a kódtárakat és szkripteket, amelyek az adott projektkód futtatásához szükségesek az adott környezetben. A requirements.txt fájlon keresztül kezelheti Python projektek függőségeit. Ha függőségeket ad meg egy requirements.txt fájlban, reprodukálhatja a projekthez szükséges környezetet. Ez a megközelítés megkönnyíti a tárolóalapú üzemelő példányokra, például az Azure App Service-be való zökkenőmentesebb áttérést, ahol a környezetkonzisztencia elengedhetetlen a megbízható alkalmazásteljesítményhez.

Jótanács

A tárolóalapú Python projektekben általában nincs szükség virtuális környezetekre, mivel a Docker-tárolók elszigetelt környezeteket biztosítanak saját Python értelmezőjükkel és függőségeikkel. Előfordulhat azonban, hogy virtuális környezeteket használ a helyi fejlesztéshez vagy teszteléshez. A Docker-rendszerképek karcsúvá alakításához zárja ki a virtuális környezeteket egy .dockerignore fájl használatával, amely megakadályozza a felesleges fájlok képbe másolását.

A Docker-tárolók Python virtuális környezetekhez hasonló képességeket kínálnak, de a reprodukálhatóság, az elkülönítés és a hordozhatóság terén szélesebb körű előnyökkel járnak. A virtuális környezetekkel ellentétben a Docker-tárolók konzisztensen futhatnak különböző operációs rendszereken és környezetekben, mindaddig, amíg rendelkezésre áll egy tároló-futtatókörnyezet.

A Docker-tároló tartalmazza a Python-projektkódot, valamint mindent, amit futtatnia kell, például függőségeket, környezeti beállításokat és rendszertárakat. Tároló létrehozásához először létre kell hoznia egy Docker-rendszerképet a projektkódból és a konfigurációból, majd el kell indítania egy tárolót, amely a rendszerkép futtatható példánya.

A Python-projektek tárolóba helyezésekor a legfontosabb fájlokat az alábbi táblázat ismerteti:

Projektfájl Leírás
requirements.txt Ez a fájl tartalmazza az alkalmazáshoz szükséges Python-függőségek végleges listáját. A Docker ezt a listát használja a rendszerkép-létrehozási folyamat során az összes szükséges csomag telepítéséhez. Ez a folyamat biztosítja a fejlesztési és üzembehelyezési környezetek közötti konzisztenciát.
Dockerfile Ez a fájl utasításokat tartalmaz a Python Docker-rendszerkép létrehozásához, beleértve az alaprendszerkép kiválasztását, a függőségek telepítését, a kódmásolást és a tároló indítási parancsait. Meghatározza az alkalmazás teljes végrehajtási környezetét. További információkért tekintse meg a Python Dockerfile-utasításait.
.dockerignore Ez a fájl határozza meg azokat a fájlokat és könyvtárakat, amelyeket ki kell zárni a Docker-lemezképbe a Docker-fájlban COPY található paranccsal történő tartalommásoláskor. A .gitignore-hoz hasonló mintákat használ a kizárások meghatározásához. További információ: .dockerignore fájl.

A fájlok kizárása javítja a lemezkép elkészítésének teljesítményét, és azt is megakadályozza, hogy bizalmas információk kerüljenek a lemezképbe, ahol azok megvizsgálhatók. A .dockerignore fájlnak például sorokat kell tartalmaznia az .env és a .venv (virtuális környezetek) figyelmen kívül hagyásához.

Web-keretrendszerek tárolóbeállításai

A webes keretrendszerek általában alapértelmezett portokhoz kötődnek, például a Flask 5000-hez, a FastAPI-hoz pedig 8000-hez. Amikor tárolókat helyez üzembe Azure szolgáltatásokban, például Azure Container Instances, Azure Kubernetes Service (AKS) vagy App Service for Containers szolgáltatásban, explicit módon tegye elérhetővé és konfigurálja a tároló figyelési portját a bejövő forgalom megfelelő útválasztásának biztosítása érdekében. A megfelelő port konfigurálása biztosítja, hogy az Azure infrastruktúrája a megfelelő végpontra irányíthassa a kéréseket a tárolón belül.

Webes keretrendszer Kikötő
Django 8 000
Flask 5000 vagy 5002
FastAPI (uvicorn) 8000 vagy 80

Az alábbi táblázat bemutatja, hogyan állíthatja be a portot különböző Azure-tárolómegoldásokhoz.

Azure-tárolómegoldás Webalkalmazás-port beállítása
Web App for Containers Alapértelmezés szerint az App Service feltételezi, hogy az egyéni tároló a 80-os vagy a 8080-as porton figyel. Ha a tároló egy másik portot figyel, állítsa be az WEBSITES_PORT alkalmazásbeállítást az App Service-alkalmazásban. További információ: Egyéni tároló konfigurálása az Azure App Service-hez.
Azure Konténeres Alkalmazások Az Azure Container Apps lehetővé teszi, hogy a bejövő forgalom engedélyezésével tegye elérhetővé a tárolóalkalmazást a nyilvános weben, a virtuális hálózaton vagy az ugyanazon a környezetben található más tárolóalkalmazások számára. Állítsa be az ingress targetPort értékét arra a portra, amelyet a tároló a bejövő kérések figyelésére használ. Az alkalmazás bejövő végpontja mindig elérhető a 443-as porton. További információ: HTTPS- vagy TCP-bejövő forgalom beállítása az Azure Container Appsben.
Azure Container Instances, Azure Kubernetes Megadhatja azt a portot, amelyen az alkalmazás figyel a tároló vagy a pod létrehozása során. A tárolórendszerképnek tartalmaznia kell egy webes keretrendszert, egy alkalmazáskiszolgálót (például gunicorn, uvicorn) és opcionálisan egy webkiszolgálót (például nginx). Összetettebb forgatókönyvek esetén a feladatokat két tárolóra oszthatja fel: az egyik az alkalmazáskiszolgálóra, a másikra a webkiszolgálóra. Ebben az esetben a webkiszolgáló-tároló általában a külső forgalom számára teszi elérhetővé a 80-at vagy a 443-at.

Python Dockerfile

A Dockerfile egy szöveges fájl, amely utasításokat tartalmaz a Docker-rendszerképek Python-alkalmazásokhoz való létrehozásához. Az első utasítás általában meghatározza az alaprendszerképet, amelyből kiindulni szeretne. A következő utasítások részletesen ismertetik a műveleteket, például a szükséges szoftverek telepítését, az alkalmazásfájlok másolását és a környezet konfigurálását futtatható rendszerkép létrehozásához. Az alábbi táblázat Python-specifikus példákat tartalmaz a gyakran használt Dockerfile-utasításokhoz.

Utasítás Cél példa
TŐL Beállítja az alaprendszerképet a későbbi utasításokhoz. FROM python:3.9-slim
LELEPLEZ Közli a Dockerrel, hogy a tároló futásidőben figyel egy adott portot. EXPOSE 5000
MÁSOLAT Fájlokat vagy könyvtárakat másol a megadott forrásból, és hozzáadja őket a tároló fájlrendszeréhez a megadott célelérési útvonalon. COPY . /app
FUT Parancsot futtat a Docker-rendszerképen belül. Például bevonhatók a függőségek. A parancs a buildeléskor egyszer fut. RUN python -m pip install -r requirements.txt
CMD A parancs biztosítja a tárolók végrehajtásának alapértelmezett beállítását. Csak egy parancsmag utasítása lehet. CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]

A Docker build parancs Docker-rendszerképeket hoz létre egy docker-fájlból és egy környezetből. A build környezete a megadott elérési úton vagy URL-címen található fájlok halmaza. Általában a Python-projekt gyökeréből készít egy képet, a buildelési parancs elérési útja pedig "." az alábbi példában látható módon.

docker build --rm --pull  --file "Dockerfile"  --tag "mywebapp:latest"  .

A buildelési folyamat a környezet bármely fájljára hivatkozhat. A build például a COPY utasítással hivatkozhat egy fájlra a környezetben. Íme egy példa egy Python-projekt Dockerfile-jára a Flask-keretrendszer használatával:

FROM python:3.13-slim

EXPOSE 5000

# Keeps Python from generating .pyc files in the container.
ENV PYTHONDONTWRITEBYTECODE=1

# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1

# Install pip requirements.
COPY requirements.txt .
RUN python -m pip install -r requirements.txt

WORKDIR /app
COPY . /app

# Creates a non-root user with an explicit UID and adds permission to access the /app folder.
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

# Provides defaults for an executing container; can be overridden with Docker CLI.
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]

A Docker-fájlokat kézzel is létrehozhatja, vagy automatikusan létrehozhatja a VS Code-tal és a Docker-bővítménysel. További információ: Docker-fájlok létrehozása.

A Docker buildelési parancsa a Docker parancssori felületének része. Ha olyan fejlesztőkörnyezeteket használ, mint például VS Code vagy a PyCharm, a Docker-rendszerképek használatához a felhasználói felület parancsai meghívják a 'build' parancsot, és automatizálják a beállítások megadását.

Python Docker-rendszerképek és -tárolók használata

VS Code és PyCharm

Az integrált fejlesztési környezetek (IDE-k), például a Visual Studio Code (VS Code) és a PyCharm leegyszerűsítik a Python-tárolók fejlesztését a Docker-feladatok munkafolyamatba való integrálásával. A bővítmények vagy beépülő modulok használatával ezek az integrált fejlesztői környezetek leegyszerűsítik a Docker-lemezképek készítését, a tárolók futtatását, valamint az Azure-szolgáltatásokba, például az Azure App Service-be vagy az Azure Container Instancesbe történő üzembe helyezést. Íme néhány dolog, amit a VS Code és a PyCharm használatával végezhet el.

  • Docker-rendszerképek letöltése és létrehozása.

    • Hozzon létre képeket a fejlesztői környezetben.
    • Docker-rendszerképeket hozhat létre az Azure-ban anélkül, hogy a Docker telepítve lett a fejlesztői környezetben. (A PyCharm esetében az Azure CLI-vel hozhat létre képeket az Azure-ban.)
  • Docker-tárolók létrehozása és futtatása közvetlenül Docker-fájlból, meglévő rendszerképből vagy letöltött rendszerképből.

  • Többkontaineres alkalmazások futtatása a Docker Compose használatával.

  • Csatlakozzon és működjön együtt olyan tárolóregisztrációs adatbázisokkal, mint a Docker Hub, a GitLab, a JetBrains Space, a Docker V2 és más saját üzemeltetésű Docker-adatbázisok.

  • (csak VS Code) Adjon hozzá egy, a Python-projekthez szabott Dockerfile- és Docker-összeállítási fájlokat.

Ha úgy szeretné beállítani a VS Code-ot és a PyCharmot, hogy Docker-tárolókat futtasson a fejlesztői környezetben, kövesse az alábbi lépéseket.

Ha még nem tette meg, telepítse az Azure Tools for VS Code-ot.

Utasítások Képernyőkép
1. lépés: A SHIFT + ALT + A használatával nyissa meg az Azure-bővítményt , és ellenőrizze, hogy csatlakozik-e az Azure-hoz.

Az Azure ikont a VS Code bővítménysávján is kiválaszthatja.

Ha nincs bejelentkezve, válassza a Bejelentkezés az Azure-ba lehetőséget, és kövesse az utasításokat.

Ha problémát tapasztal a Azure-előfizetés elérésekor, az lehet, hogy proxy mögött áll. A csatlakozási problémák megoldásához tekintse meg a Visual Studio Code hálózati kapcsolatait.
Képernyőkép arról, hogy az Azure Tools hogyan néz ki, miután bejelentkezett. Képernyőkép az Azure Tools megjelenéséről, ha nincs bejelentkezve.
2. lépés: A CTRLSHIFT + X + nyissa meg a Bővítményeket, keresse meg a Docker-bővítményt, és telepítse a bővítményt.

A VS Code bővítménysávján a Bővítmények ikont is kiválaszthatja.
Képernyőkép a Docker-bővítmény VS Code-hoz való hozzáadásáról.
3. lépés: Válassza ki a Docker ikont a bővítménysávon, bontsa ki a képeket, és kattintson a jobb gombbal egy Docker-lemezképre tárolóként való futtatásához. Képernyőkép arról, hogyan futtathat tárolót Docker-rendszerképből a VS Code-ban a Docker-bővítmény használatával.
4. lépés: A Docker-futtatási kimenet monitorozása a terminálablakban . Példa egy tároló VS Code-ban való futtatására.

Azure CLI és Docker CLI

Python Docker-rendszerképekkel és -tárolókkal a Azure CLI és Docker CLI használatával is dolgozhat. A VS Code és a PyCharm is rendelkezik terminálokkal, ahol futtathatja ezeket a CLI-ket.

Használjon cli-t, ha részletesebben szeretné szabályozni a buildelési és futtatási argumentumokat, valamint az automatizálást. Az alábbi parancs például bemutatja, hogyan használható az Azure CLI az acr build a Docker-rendszerkép nevének megadásához.

az acr build --registry <registry-name> \
  --resource-group <resource-group> \
  --image pythoncontainerwebapp:latest .

Egy másik példaként tekintse meg az alábbi parancsot, amely bemutatja, hogyan használható a Docker CLI futtatási parancsa. A példa bemutatja, hogyan futtathat olyan Docker-tárolót, amely a tárolón kívül, a fejlesztői környezetben lévő MongoDB-példánysal kommunikál. A parancs végrehajtásához tartozó különböző értékek egyszerűbben automatizálhatóak, ha egy parancssorban meg vannak adva.

docker run --rm -it \
  --publish <port>:<port> --publish 27017:27017 \
  --add-host mongoservice:<your-server-IP-address> \
  --env CONNECTION_STRING=mongodb://mongoservice:27017 \
  --env DB_NAME=<database-name> \
  --env COLLECTION_NAME=<collection-name> \
  containermongo:latest  

Erről a forgatókönyvről további információt a tárolóalapú Python-webalkalmazások helyi buildelése és tesztelése című témakörben talál.

Környezeti változók tárolókban

A Python-projektek általában környezeti változókkal adják át a konfigurációs adatokat az alkalmazás kódjába. Ez a megközelítés nagyobb rugalmasságot biztosít a különböző környezetekben. Az adatbázis-kapcsolat adatait például környezeti változókban tárolhatja, így a kód módosítása nélkül egyszerűen válthat a fejlesztési, tesztelési és éles adatbázisok között. A konfigurációnak a kódtól való elkülönítése elősegíti a tisztább üzembe helyezéseket, és javítja a biztonságot és a karbantarthatóságot.

A python-dotenv-hez hasonló csomagok segítségével beolvashatja a kulcs-érték párokat egy .env fájlból, és környezeti változókként állíthatja be őket. Az .env-fájlok akkor hasznosak, ha virtuális környezetben futnak, de tárolók használata esetén nem ajánlott. Ne másolja az .env fájlt a Docker-lemezképbe, különösen akkor, ha bizalmas információkat tartalmaz, és a tároló nyilvános. A .dockerignore fájllal kizárhatja a fájlok docker-lemezképbe való másolását. További információkért tekintse meg a jelen cikk Virtuális környezetek és tárolók című szakaszát.

A környezeti változókat többféleképpen is átadhatja a tárolóknak:

  1. Definiálja őket a Dockerfile-ban ENV-utasításokként .
  2. Adja át őket --build-arg argumentumként a Docker build parancshoz.
  3. Adja át őket argumentumként --secret a Docker buildelési parancsával és a BuildKit háttérrendszerrel.
  4. Adja át őket --env vagy --env-file argumentumként a Docker run paranccsal.

Az első két lehetőség ugyanazzal a hátránysal rendelkezik, mint az .env fájloknál: a potenciálisan bizalmas adatokat docker-rendszerképekbe kódolhatja. Megvizsgálhat egy Docker-lemezképet, és megtekintheti a környezeti változókat, például a Docker-rendszerkép vizsgálata parancs használatával.

A BuildKit harmadik lehetősége lehetővé teszi, hogy a Dockerfile-ban használandó titkos információkat biztonságos módon adja át a Docker-rendszerképek létrehozásához, és ne a végső lemezképben tárolja őket.

A környezeti változók docker-futtatási parancs használatával történő átadásának negyedik lehetősége azt jelenti, hogy a Docker-rendszerkép nem tartalmazza a változókat. A változók azonban továbbra is láthatók a tárolópéldány vizsgálatakor (például a Docker-tároló vizsgálatával). Ez a beállítás elfogadható lehet, ha a tárolópéldányhoz való hozzáférés szabályozott, tesztelési vagy fejlesztési forgatókönyvekben van.

Íme egy példa a környezeti változók átadására a Docker CLI futtatási parancsával és az --env argumentum használatával.

# PORT=8000 for Django and 5000 for Flask
export PORT=<port-number>

docker run --rm -it \
  --publish $PORT:$PORT \
  --env CONNECTION_STRING=<connection-info> \
  --env DB_NAME=<database-name> \
  <dockerimagename:tag>

A VS Code (Docker-bővítmény) vagy a PyCharm (Docker beépülő modul) felhasználói felületi eszközei leegyszerűsítik a Docker-rendszerképek és -tárolók kezelését a szabványos Docker CLI-parancsok (például a Docker buildelése és a Docker-futtatás) végrehajtásával a háttérben.

Végül, a környezeti változók megadása a tárolók Azure-ban való üzembe helyezésekor eltér a fejlesztői környezetben használt környezeti változóktól. Például:

  • A Web App for Containers esetében az App Service konfigurálása során konfigurálhatja az alkalmazásbeállításokat. Az alkalmazáskód a standard os.environ minta használatával környezeti változókként érheti el ezeket a beállításokat. Szükség esetén a kezdeti üzembe helyezés után is módosíthatja az értékeket. További információ: Access-alkalmazásbeállítások környezeti változókként.

  • Az Azure Container Apps esetében környezeti változókat konfigurálhat a tárolóalkalmazás kezdeti konfigurálása során. A környezeti változók későbbi módosítása létrehozza a tároló felülvizsgálatát . Az Azure Container Apps emellett lehetővé teszi a titkos kulcsok alkalmazásszinten történő meghatározását, majd környezeti változókban való hivatkozását. További információ: Titkos kódok kezelése az Azure Container Appsben.

Másik lehetőségként a Service Connector segítségével csatlakoztathatja az Azure számítási szolgáltatásokat más háttérszolgáltatásokhoz. Ez a szolgáltatás konfigurálja a hálózati beállításokat és a kapcsolati információkat (például környezeti változók generálását) a számítási szolgáltatások és a cél háttérszolgáltatások között a felügyeleti síkon.

Tárolónaplók megtekintése

Tekintse meg a tárolópéldány-naplókat a diagnosztikai üzenetek kódból való kimenetének megtekintéséhez és a tároló kódjának hibáinak elhárításához. Az alábbiakban többféleképpen tekintheti meg a naplókat, amikor tárolót futtat a fejlesztői környezetben:

  • A VS Code vagy a PyCharm használatával történő konténerek futtatása esetén, amint azt a VS Code és a PyCharm szakasz bemutatja, a Docker futtatása során megnyitott terminálablakokban láthatók a naplók.

  • Ha a Docker CLI-futtatási parancsot használja az interaktív jelzővel -it, a parancsot követő kimenet jelenik meg.

  • A Docker Desktopban egy futó tároló naplóit is megtekintheti.

Amikor üzembe helyez egy tárolót az Azure-ban, hozzáférhet a tárolónaplókhoz is. Az alábbiakban számos Azure-szolgáltatást talál, és megtudhatja, hogyan érheti el a tárolónaplókat az Azure Portalon.

Azure-szolgáltatás Naplók elérése az Azure Portalon
Web App for Containers Lépjen a Problémák diagnosztizálása és megoldása erőforrásra a naplók megtekintéséhez. A diagnosztika egy intelligens és interaktív élmény, amely segít konfiguráció nélkül el-hárítani az alkalmazás hibáit. A naplók valós idejű megtekintéséhez nyissa meg a Figyelési - napló streamet. Részletesebb napló-lekérdezéseket és konfigurációt a Figyelés területen található egyéb erőforrásokban talál.
Azure Container Apps Lépjen a környezeti erőforrás Diagnosztizálás és problémamegoldás menüpontjára a környezeti problémák megoldásához. Gyakrabban van szüksége a konténernaplók megtekintésére. A tárolóerőforrásban, az Alkalmazás - változatkezelése területen válassza ki a verziót, és onnan megtekintheti a rendszer- és konzolnaplókat. Részletesebb napló lekérdezéseket és konfigurációt a Figyelés területen található erőforrásokban talál.
Azure Container Instances Nyissa meg a Tárolók erőforrást, és válassza a Naplók lehetőséget.

Az alábbiakban láthatók az Azure CLI-parancsok, amelyekkel ezeknek a szolgáltatásoknak a naplói elérhetők.

Azure-szolgáltatás Azure CLI-parancs a naplók eléréséhez
Web App for Containers az webapp log
Azure Container Apps az containerapps logs
Azure Container Instances az container logs

A VS Code a naplók megtekintését is támogatja. Az Azure Tools for VS Code-nak telepítve kell lennie. Az alábbiakban egy példa látható a Web Apps for Containers (App Service) naplóinak a VS Code-ban való megtekintésére.

Képernyőkép a naplók megtekintéséről a VS Code for Web Apps for Containers alkalmazásban.

Következő lépések