Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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ók fejlesztéséhez a kódról tárolóra való áttérés néhány tipikus munkafolyamatát az alábbi táblázat ismerteti.
| Forgatókönyv | Leírás | Munkafolyamat |
|---|---|---|
| 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 Olyan Azure-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 FastPI-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 kezelése helyett az alkalmazáslogikára összpontosíthatnak. Példa: Flask- vagy FastPI-webalkalmazás üzembe helyezése az Azure Container Appsben. |
| 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 ACI ideális a teljes körűen felügyelt tárolómegoldást kereső csapatok számára, míg az AKS teljes körű felügyeletet biztosít a Kubernetes-fürt felett, ami megköveteli a konfigurációk, a hálózatkezelés, a skálázás és a műveletek kezelését. 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 használni az 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. al 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 Python-projektek függőségeit a requirements.txt fájl kezeli. Ha függőségeket ad meg egy requirements.txt fájlban, a fejlesztők reprodukálhatják 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 a virtuális környezetek általában szükségtelenek, mivel a Docker-tárolók elkülönített 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úságának megőrzéséhez zárja ki a virtuális környezeteket egy .dockerignore fájllal, amely megakadályozza a felesleges fájlok képbe másolását.
A Docker-tárolók a 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 biztosítja a fejlesztési és az ü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, amikor tartalmat másol a Docker-lemezképre a COPY Dockerfile parancsával. Ez a fájl a .gitignore-hoz hasonló mintákat használ a kizárások meghatározásához. A .dockerignore fájl a .gitignore-fájlokhoz hasonló kizárási mintákat támogat. További információ: .dockerignore fájl. A fájlok kizárása segít a képek összeállításában, de arra is használható, hogy ne adjon hozzá bizalmas információkat a képhez, ahol megvizsgálható. A .dockerignore-nak például olyan sorokat kell tartalmaznia, amelyek figyelmen kívül hagyják az .env és a .venv (virtuális környezetek) használatát. |
Web-keretrendszerek tárolóbeállításai
A webes keretrendszerek általában alapértelmezett portokhoz kötődnek (például 5000 a Flaskhoz, 8000 a FastAPI-hoz). Amikor tárolókat helyez üzembe az Azure-szolgáltatásokban, például az Azure Container Instancesben, az Azure Kubernetes Service-ben (AKS) vagy az App Service for Containersben, elengedhetetlen, hogy 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 |
| Lombik | 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 |
|---|---|
| Konténerekhez készült webalkalmazás | 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 két tárolóra oszthatja fel a feladatokat– az egyik az alkalmazáskiszolgálóra, a másik a webkiszolgálóra terjed ki. 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 ezután 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 egy 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.9-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. Bővítményekkel vagy beépülő modulokkal ezek az IDE-k leegyszerűsítik a Docker-képek készítését, a tárolók futtatását és az olyan Azure-szolgáltatásokba, mint az App Service vagy a Container Instances, való ü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ái vannak az Azure-előfizetéséhez való hozzáféréssel, az azért lehet, mert egy proxy szerver mögött lehet. A csatlakozási problémák megoldásához tekintse meg a Visual Studio Code hálózati kapcsolatait. |
|
|
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. |
|
| 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 tárolóként futtatott Docker-lemezképre. |
|
| 4. lépés: A Docker-futtatási kimenet monitorozása a terminálablakban . |
|
Azure CLI és Docker CLI
A Python Docker-rendszerképekkel és -tárolókkal az Azure CLI és a 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> \
--target 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 tesz lehetővé a különböző környezetekben. Az adatbázis-kapcsolat részletei például környezeti változókban tárolhatók, í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.
Az olyan csomagok, mint a Python-dotenv , gyakran használják kulcs-érték párok beolvasására egy .env fájlból, és környezeti változókként állítják 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ánossá válik. 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:
- A Dockerfile-ban env utasításként definiálva.
- A Docker
--build-argparancs argumentumaiként átadva. - Az argumentumokat a Docker build parancsával és a
--secretháttérrendszerrel adják át. - A Docker
--envparancs használata során--env-filevagy argumentumokként kerülnek átadásra.
Az első két lehetőség ugyanazzal a hátránysal rendelkezik, mint az .env fájloknál, nevezetesen, hogy a potenciálisan bizalmas adatokat egy Docker-rendszerképbe alakítja. Megvizsgálhat egy Docker-lemezképet, és megtekintheti a környezeti változókat, például a docker-rendszerkép vizsgá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, amelyek nem lesznek a végső lemezképben tárolva.
A környezeti változók Docker-futtatási paranccsal 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 Docker CLI-futtatási parancs használatával és az argumentum használatával történő átadására --env .
# 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 szabványos Docker CLI-parancsok (például docker buildelés, docker-futtatás) futtatá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. Ezek a beállítások környezeti változókként érhetők el az alkalmazás kódjához, és a standard os.environ mintával érhetők el. 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 |
|---|---|
| Konténerekhez készült webalkalmazás | 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 Konténer Alkalmazások | 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-tartálypéldányok | 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 |
|---|---|
| Konténerekhez készült webalkalmazás | az webapp log |
| Azure Konténer Alkalmazások | az containerapps logs |
| Azure-tartálypéldányok | 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.