Egyéni tároló konfigurálása az Azure App Service-hez
Ez a cikk bemutatja, hogyan konfigurálhat egyéni tárolót Azure-alkalmazás szolgáltatáson való futtatáshoz.
Ez az útmutató a Windows-alkalmazások App Service-ben történő tárolóba helyezésének alapvető fogalmait és utasításait ismerteti. Az új Azure-alkalmazás szolgáltatásfelhasználóknak először az egyéni tároló rövid útmutatót és oktatóanyagot kell követnie.
Ez az útmutató alapvető fogalmakat és utasításokat tartalmaz a Linux-alkalmazások App Service-ben való tárolóba helyezéséhez. Ha még nem ismerkedik a Azure-alkalmazás szolgáltatással, először kövesse az egyéni tároló rövid útmutatót és oktatóanyagot. A sidecar-tárolók (előzetes verzió) esetében lásd: Oktatóanyag: Oldalkocsi-tároló konfigurálása egyéni tárolóhoz Azure-alkalmazás szolgáltatásban (előzetes verzió).
Feljegyzés
A Szolgáltatásnév már nem támogatott a Windows tárolólemezképek lekéréses hitelesítéséhez. Az ajánlott módszer a Felügyelt identitás használata Windows és Linux rendszerű tárolókhoz
Támogatott szülőképek
Az egyéni Windows-rendszerképhez a megfelelő szülőrendszerképet (alaprendszerképet) kell választania a kívánt keretrendszerhez:
- Az .NET-keretrendszer alkalmazások üzembe helyezéséhez használjon egy szülőrendszerképet a Windows Server 2019 Core Hosszú távú karbantartási csatorna (LTSC) kiadásán alapulva.
- A .NET Core-alkalmazások üzembe helyezéséhez használjon egy szülőrendszerképet a Windows Server 2019 Nano Semi-Annual Servicing Channel (SAC) kiadásán alapulva.
Az alkalmazás indításakor a szülőrendszerkép letöltése hosszabb időbe telhet. Az indítási időt azonban lecsökkentheti az alábbi, az Azure App Service-ben már gyorsítótárazott szülőrendszerképek egyikének használatával:
- mcr.microsoft.com/windows/servercore:ltsc2022
- mcr.microsoft.com/windows/servercore:ltsc2019
- mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2022
- mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
- mcr.microsoft.com/dotnet/runtime:6.0-nanoserver-ltsc2022
- mcr.microsoft.com/dotnet/runtime:6.0-nanoserver-1809
- mcr.microsoft.com/dotnet/aspnet:6.0-nanoserver-ltsc2022
- mcr.microsoft.com/dotnet/aspnet:6.0-nanoserver-1809
Egyéni tároló Docker-lemezképének módosítása
Ha egy meglévő egyéni tárolót az aktuális Docker-lemezképről új lemezképre szeretne módosítani, használja a következő parancsot:
az webapp config container set --name <app-name> --resource-group <group-name> --docker-custom-image-name <docker-hub-repo>/<image>
Rendszerkép használata privát beállításjegyzékből
Ha egy privát beállításjegyzékből (például az Azure Container Registryből) származó lemezképet szeretne használni, futtassa a következő parancsot:
az webapp config container set --name <app-name> --resource-group <group-name> --docker-custom-image-name <image-name> --docker-registry-server-url <private-repo-url> --docker-registry-server-user <username> --docker-registry-server-password <password>
A felhasználónév> és <a jelszó> megadásához <adja meg a bejelentkezési hitelesítő adatokat a privát beállításjegyzék-fiókhoz.
Felügyelt identitás használata lemezkép lekéréséhez az Azure Container Registryből
Az alábbi lépésekkel konfigurálhatja a webalkalmazást úgy, hogy lekérje az Azure Container Registryből (ACR) felügyelt identitás használatával. A lépések a rendszer által hozzárendelt felügyelt identitást használják, de használhat felhasználó által hozzárendelt felügyelt identitást is.
Engedélyezze a webalkalmazás rendszer által hozzárendelt felügyelt identitását a
az webapp identity assign
következő paranccsal:az webapp identity assign --resource-group <group-name> --name <app-name> --query principalId --output tsv
Cserélje le
<app-name>
az előző lépésben használt névre. A parancs kimenete (amelyet az és--output
az--query
argumentumok szűrnek) a hozzárendelt identitás egyszerű szolgáltatásazonosítója.Kérje le az Azure Container Registry erőforrás-azonosítóját:
az acr show --resource-group <group-name> --name <registry-name> --query id --output tsv
Cserélje le a
<registry-name>
elemet a tárolójegyzék nevére. A parancs kimenete (az és--output
argumentumok--query
alapján szűrve) az Azure Container Registry erőforrás-azonosítója.Adjon engedélyt a felügyelt identitásnak a tárolóregisztrációs adatbázis eléréséhez:
az role assignment create --assignee <principal-id> --scope <registry-resource-id> --role "AcrPull"
Cserélje az alábbi értékeket:
<principal-id>
a parancs szolgáltatásnév-azonosítójávalaz webapp identity assign
<registry-resource-id>
a tárolóregisztrációs adatbázis azonosítójával aaz acr show
parancsból
További információ ezekről az engedélyekről: Mi az Azure szerepköralapú hozzáférés-vezérlése?
Konfigurálja az alkalmazást úgy, hogy a felügyelt identitás használatával lekérje az Azure Container Registryből.
az webapp config set --resource-group <group-name> --name <app-name> --generic-configurations '{"acrUseManagedIdentityCreds": true}'
Cserélje az alábbi értékeket:
<app-name>
a webalkalmazás nevével.
Tipp.
Ha PowerShell-konzolt használ a parancsok futtatásához, az ebben és a következő lépésben
--generic-configurations
szereplő argumentum sztringjei elől kell menekülnie. Például:--generic-configurations '{\"acrUseManagedIdentityCreds\": true'
(Nem kötelező) Ha az alkalmazás felhasználó által hozzárendelt felügyelt identitást használ, győződjön meg arról, hogy az identitás konfigurálva van a webalkalmazásban, majd állítsa be a tulajdonságot az
acrUserManagedIdentityID
ügyfélazonosító megadásához:az identity show --resource-group <group-name> --name <identity-name> --query clientId --output tsv
Cserélje le a
<identity-name>
felhasználó által hozzárendelt felügyelt identitást, és a kimenettel<client-id>
konfigurálja a felhasználó által hozzárendelt felügyelt identitásazonosítót.az webapp config set --resource-group <group-name> --name <app-name> --generic-configurations '{"acrUserManagedIdentityID": "<client-id>"}'
Minden be van állítva, és a webalkalmazás mostantól felügyelt identitást használ az Azure Container Registryből való lekéréshez.
Rendszerkép használata hálózati védelem alatt álló beállításjegyzékből
A virtuális hálózaton vagy a helyszínen lévő beállításjegyzékből való csatlakozáshoz és lekéréshez az alkalmazásnak integrálnia kell egy virtuális hálózattal (VNET). A virtuális hálózatok integrációjára az Azure Container Registryhez is szükség van privát végponttal. Ha a hálózat és a DNS felbontása konfigurálva van, a helybeállítás konfigurálásával engedélyezheti a rendszerkép-lekérés útválasztását a vnetImagePullEnabled
virtuális hálózaton:
az resource update --resource-group <group-name> --name <app-name> --resource-type "Microsoft.Web/sites" --set properties.vnetImagePullEnabled [true|false]
Nem látom a frissített tárolót
Ha úgy módosítja a Docker-tároló beállításait, hogy egy új tárolóra mutasson, az eltarthat néhány percig, amíg az alkalmazás http-kéréseket küld az új tárolóból. Miközben az új tároló lekérése és elindítása folyamatban van, az App Service továbbra is kiszolgálja a régi tárolóból érkező kéréseket. Az App Service csak akkor indítja el a kéréseket, ha az új tároló elindult, és készen áll a kérelmek fogadására.
Tárolólemezképek tárolása
Amikor először futtat egyéni Docker-lemezképet az App Service-ben, az App Service elvégzi docker pull
az összes képréteg lekérését és lekérését. Ezek a rétegek lemezen vannak tárolva, például a Docker helyszíni használata esetén. Minden alkalommal, amikor az alkalmazás újraindul, az App Service elvégzi a docker pull
elemet, de csak a módosított rétegeket húzza le. Ha nincsenek módosítások, az App Service meglévő rétegeket használ a helyi lemezen.
Ha az alkalmazás bármilyen okból módosítja a számítási példányokat, például a tarifacsomagok fel- és leskálázását, az App Service-nek újra le kell húznia az összes réteget. Ugyanez igaz, ha vertikális felskálázást végez további példányok hozzáadásához. Vannak olyan ritka esetek is, amikor az alkalmazáspéldányok skálázási művelet nélkül változhatnak.
Portszám konfigurálása
Alapértelmezés szerint az App Service azt feltételezi, hogy az egyéni tároló a 80-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. Ezt a Cloud Shell használatával állíthatja be. A Bashben:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_PORT=8000
A PowerShellben:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITES_PORT"="8000"}
Az App Service jelenleg lehetővé teszi, hogy a tároló csak egy portot tegyen elérhetővé a HTTP-kérésekhez.
Környezeti változók konfigurálása
Előfordulhat, hogy az egyéni tároló környezeti változókat használ, amelyeket külsőleg kell megadni. Ezeket a Cloud Shellen keresztül is átadhatja. A Bashben:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings DB_HOST="myownserver.mysql.database.azure.com"
A PowerShellben:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"DB_HOST"="myownserver.mysql.database.azure.com"}
Az alkalmazás futtatásakor a rendszer automatikusan környezeti változókként injektálja az App Service alkalmazásbeállításait a folyamatba. A tárolókörnyezet változóit az URL-címmel https://<app-name>.scm.azurewebsites.net/Env
ellenőrizheti.
Ha az alkalmazás magánregisztrációs adatbázisból vagy a Docker Hubról származó lemezképeket használ, az adattár eléréséhez szükséges hitelesítő adatokat a rendszer környezeti változókba menti: DOCKER_REGISTRY_SERVER_URL
és DOCKER_REGISTRY_SERVER_USERNAME
DOCKER_REGISTRY_SERVER_PASSWORD
. A biztonsági kockázatok miatt ezek közül a fenntartott változónevek egyike sem érhető el az alkalmazás számára.
IIS- vagy .NET-keretrendszer -alapú (4.0-s vagy újabb) tárolók esetén az App Service automatikusan .NET-alkalmazásbeállításokként és kapcsolati sztring adja meg System.ConfigurationManager
őket. Az összes többi nyelvhez vagy keretrendszerhez környezeti változóként vannak megadva a folyamathoz, az alábbi előtagok egyikével:
APPSETTING_
SQLCONTR_
MYSQLCONTR_
SQLAZURECOSTR_
POSTGRESQLCONTR_
CUSTOMCONNSTR_
Ez a módszer egytárolós vagy többtárolós alkalmazások esetében is működik, ahol a környezeti változók a docker-compose.yml fájlban vannak megadva.
Állandó megosztott tárterület használata
A C:\home könyvtárat az egyéni tároló fájlrendszerében használhatja a fájlok újraindítások közötti megőrzéséhez és példányok közötti megosztásához. A C:\home
címtár lehetővé teszi az egyéni tároló számára az állandó tároló elérését.
Ha az állandó tárterület le van tiltva, akkor a C:\home
címtárba való írás nem marad meg az alkalmazás újraindítása vagy több példány között. Ha az állandó tárolás engedélyezve van, a C:\home
címtárba írt összes írás megmarad, és egy kibővített alkalmazás összes példánya elérheti. Emellett a C:\home
tároló könyvtárában lévő összes tartalmat felülírja a tároló indításakor az állandó tárban már meglévő fájlok.
Az egyetlen kivétel a C:\home\LogFiles
tároló- és alkalmazásnaplók tárolására használt könyvtár. Ez a mappa mindig megmarad az alkalmazás újraindításakor, ha az alkalmazásnaplózás engedélyezve van a fájlrendszer beállítással, függetlenül attól, hogy az állandó tároló engedélyezve van vagy le van tiltva. Más szóval az állandó tárterület engedélyezése vagy letiltása nem befolyásolja az alkalmazás naplózási viselkedését.
Alapértelmezés szerint az állandó tárolás engedélyezve van a Windows egyéni tárolóiban. A letiltásához állítsa be az WEBSITES_ENABLE_APP_SERVICE_STORAGE
alkalmazásbeállítás értékét false
a Cloud Shellen keresztül. A Bashben:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_ENABLE_APP_SERVICE_STORAGE=false
A PowerShellben:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITES_ENABLE_APP_SERVICE_STORAGE"=false}
A /home könyvtárat az egyéni tároló fájlrendszerében használhatja a fájlok újraindítások közötti megőrzéséhez és példányok közötti megosztásához. A /home
címtár lehetővé teszi az egyéni tároló számára az állandó tároló elérését. Az adatok /home
az App Service-csomagban foglalt tárhelykvótához járulnak hozzá.
Ha az állandó tárterület le van tiltva, akkor a /home
címtárba való írás nem marad meg az alkalmazás újraindítása vagy több példány között. Ha az állandó tárolás engedélyezve van, a /home
címtárba írt összes írás megmarad, és egy kibővített alkalmazás összes példánya elérheti. Emellett a /home
tároló könyvtárában lévő összes tartalmat felülírja a tároló indításakor az állandó tárban már meglévő fájlok.
Az egyetlen kivétel a /home/LogFiles
tároló- és alkalmazásnaplók tárolására használt könyvtár. Ez a mappa mindig megmarad az alkalmazás újraindításakor, ha az alkalmazásnaplózás engedélyezve van a fájlrendszer beállítással, függetlenül attól, hogy az állandó tároló engedélyezve van vagy le van tiltva. Más szóval az állandó tárterület engedélyezése vagy letiltása nem befolyásolja az alkalmazás naplózási viselkedését.
Javasoljuk, hogy adatokat /home
írjon az Azure Storage-ba vagy egy csatlakoztatott Azure Storage-elérési útra. Az ezeken az útvonalakon kívül írt adatok nem állandók az újraindítások során, és a rendszer az App Service-csomagok fájltárolási kvótájától eltérő, platform által felügyelt gazdagép lemezterületére menti őket.
Alapértelmezés szerint az állandó tárolás le van tiltva a Linux egyéni tárolóiban. Az engedélyezéshez állítsa be az WEBSITES_ENABLE_APP_SERVICE_STORAGE
alkalmazásbeállítás értékét true
a Cloud Shellen keresztül. A Bashben:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_ENABLE_APP_SERVICE_STORAGE=true
A PowerShellben:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITES_ENABLE_APP_SERVICE_STORAGE"=true}
Feljegyzés
Saját állandó tárterületet is konfigurálhat.
HTTPS munkamenet észlelése
Az App Service az előtérnél leállítja a TLS/SSL protokollt. Ez azt jelenti, hogy a TLS-/SSL-kérések soha nem jutnak el az alkalmazáshoz. Nem kell, és nem kell implementálnia a TLS/SSL támogatását az alkalmazásba.
Az előtér az Azure-adatközpontokban található. Ha TLS/SSL-t használ az alkalmazással, az interneten keresztüli forgalom mindig biztonságosan titkosítva lesz.
ASP.NET gépkulcs-injektálás testreszabása
A tároló indítása során a rendszer automatikusan generált kulcsokat injektál a tárolóba ASP.NET titkosítási rutinok gépkulcsaként. Ezeket a kulcsokat a tárolóban a következő környezeti változók keresésével találja meg: MACHINEKEY_Decryption
, MACHINEKEY_DecryptionKey
, , MACHINEKEY_Validation
MACHINEKEY_ValidationKey
.
Az egyes újraindításokkor az új kulcsok alaphelyzetbe állíthatják ASP.NET űrlapok hitelesítését és megtekintési állapotát, ha az alkalmazás ezektől függ. A kulcsok automatikus újragenerálásának megakadályozásához állítsa őket manuálisan App Service-alkalmazásbeállításokként.
Csatlakozás a tárolóhoz
Az SSH-lehetőség kiválasztásával https://<app-name>.scm.azurewebsites.net/
közvetlenül csatlakozhat a Windows-tárolóhoz diagnosztikai feladatokhoz. Létrejön egy közvetlen SSH-munkamenet a tárolóval, amelyben parancsokat futtathat a tárolón belül.
- A fenti grafikus böngészőtől külön működik, amely csak a megosztott tárban lévő fájlokat jeleníti meg.
- A kibővített alkalmazásokban az SSH-munkamenet az egyik tárolópéldányhoz csatlakozik. A felső Kudu menü Példány legördülő menüjében másik példányt is választhat.
- A tárolóban az SSH-munkameneten belül végrehajtott módosítások nem maradnak meg az alkalmazás újraindításakor (kivéve a megosztott tároló módosításait), mert az nem része a Docker-rendszerképnek. Ha meg szeretné őrizni a módosításokat, például a beállításjegyzék beállításait és a szoftvertelepítést, tegye őket a Dockerfile részévé.
Diagnosztikai naplók elérése
Az App Service naplózza a Docker-gazdagép műveleteit és a tárolón belüli tevékenységeket. A Docker-gazdagépről (platformnaplókból) származó naplók alapértelmezés szerint le vannak szállítva, de a tárolón belüli alkalmazásnaplókat vagy webkiszolgáló-naplókat manuálisan kell engedélyezni. További információ: Az alkalmazásnaplózás engedélyezése és a webkiszolgáló-naplózás engedélyezése.
A Docker-naplók többféleképpen is elérhetők:
Az Azure Portalon
A Docker-naplók az alkalmazás Tárolóbeállítások lapján jelennek meg a portálon. A naplók csonkoltak, de a Letöltés lehetőséget választó összes naplót letöltheti.
Forrás: Kudu
Lépjen a https://<app-name>.scm.azurewebsites.net/DebugConsole
LogFiles mappára, és válassza ki az egyes naplófájlokat . A teljes LogFiles-könyvtár letöltéséhez válassza a könyvtárnév bal oldalán található "Letöltés" ikont. Ezt a mappát FTP-ügyféllel is elérheti.
Az SSH-terminálban alapértelmezés szerint nem férhet hozzá a C:\home\LogFiles
mappához, mert az állandó megosztott tárterület nincs engedélyezve. Ha engedélyezni szeretné ezt a viselkedést a konzolterminálon, engedélyezze az állandó megosztott tárterületet.
Ha ftp-ügyféllel próbálja letölteni a jelenleg használt Docker-naplót, a fájlzárolás miatt hibaüzenet jelenhet meg.
A Kudu API-val
Lépjen közvetlenül a https://<app-name>.scm.azurewebsites.net/api/logs/docker
Docker-naplók metaadatainak megtekintéséhez. Előfordulhat, hogy több naplófájl is megjelenik a listában, és a href
tulajdonság lehetővé teszi a naplófájl közvetlen letöltését.
Ha az összes naplót egy ZIP-fájlban szeretné letölteni, lépjen be a fájlba https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip
.
Tárolómemória testreszabása
Alapértelmezés szerint az Azure-alkalmazás szolgáltatásban üzembe helyezett összes Windows-tároló rendelkezik memóriakorláttal. Az alábbi táblázat az App Service-csomag termékváltozatának alapértelmezett beállításait sorolja fel.
App Service-csomag termékváltozata | Alkalmazásonkénti alapértelmezett memóriakorlát MB-ban |
---|---|
P1v3 | 1024 |
P1Mv3 | 1024 |
P2v3 | 1536 |
P2Mv3 | 1536 |
P3v3 | 2048 |
P3Mv3 | 2048 |
P4Mv3 | 2560 |
P5Mv3 | 3072 |
Ezt az értéket úgy módosíthatja, hogy megadja az WEBSITE_MEMORY_LIMIT_MB
alkalmazásbeállítást a Cloud Shellen keresztül. A Bashben:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITE_MEMORY_LIMIT_MB=2000
A PowerShellben:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITE_MEMORY_LIMIT_MB"=2000}
Az érték MB-ban van definiálva, és a gazdagép teljes fizikai memóriájának kisebbnek és egyenlőnek kell lennie. Egy 8 GB RAM-mal rendelkező App Service-csomagban például az összes alkalmazás összesített összege WEBSITE_MEMORY_LIMIT_MB
nem haladhatja meg a 8 GB-ot. Az egyes tarifacsomagok memóriahasználatával kapcsolatos információk az App Service díjszabásában, a Premium v3 szolgáltatáscsomag szakaszban találhatók.
A számítási magok számának testreszabása
Alapértelmezés szerint egy Windows-tároló a kiválasztott tarifacsomag összes elérhető magjával fut. Érdemes lehet például csökkenteni az előkészítési pont által használt magok számát. A tároló által használt magok számának csökkentéséhez állítsa be az WEBSITE_CPU_CORES_LIMIT
alkalmazásbeállítást az előnyben részesített magok számára. Ezt a Cloud Shell használatával állíthatja be. A Bashben:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --slot staging --settings WEBSITE_CPU_CORES_LIMIT=1
A PowerShellben:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITE_CPU_CORES_LIMIT"=1}
Feljegyzés
Az alkalmazásbeállítás frissítése automatikus újraindítást vált ki, ami minimális állásidőt okoz. Éles alkalmazások esetében fontolja meg az előkészítési pontra való felcserélést, az előkészítési ponton az alkalmazás beállításának módosítását, majd az éles környezetbe való visszacserélését.
Ellenőrizze a módosított számot egy SSH-munkamenet megnyitásával a portálon vagy a Kudu portálon (https://<app-name>.scm.azurewebsites.net/webssh/host
) keresztül, és írja be a következő parancsokat a PowerShell használatával. Minden parancs egy számot ad ki.
Get-ComputerInfo | ft CsNumberOfLogicalProcessors # Total number of enabled logical processors. Disabled processors are excluded.
Get-ComputerInfo | ft CsNumberOfProcessors # Number of physical processors.
A processzorok lehetnek többmagos vagy hipertreading processzorok. Az egyes tarifacsomagok magjairól az App Service díjszabásában, a Premium v3 szolgáltatáscsomag szakaszban tájékozódhat.
Állapot pingelési viselkedésének testreszabása
Az App Service úgy véli, hogy a tároló indításakor a tároló sikeresen elindult, és http-pingre válaszol. Az állapot pingelési kérése tartalmazza a fejlécet User-Agent= "App Service Hyper-V Container Availability Check"
. Ha a tároló elindul, de bizonyos idő elteltével nem válaszol a pingekre, az App Service naplóz egy eseményt a Docker naplójában, amely szerint a tároló nem indult el.
Ha az alkalmazás erőforrás-igényes, előfordulhat, hogy a tároló nem válaszol időben a HTTP-pingre. A HTTP-pingek sikertelen futtatásakor végrehajtandó műveletek szabályozásához állítsa be az alkalmazásbeállítást CONTAINER_AVAILABILITY_CHECK_MODE
. Ezt a Cloud Shell használatával állíthatja be. A Bashben:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings CONTAINER_AVAILABILITY_CHECK_MODE="ReportOnly"
A PowerShellben:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"CONTAINER_AVAILABILITY_CHECK_MODE"="ReportOnly"}
Az alábbi táblázat a lehetséges értékeket mutatja be:
Érték | Leírások |
---|---|
Javítás | Három egymást követő rendelkezésre állási ellenőrzés után indítsa újra a tárolót |
ReportOnly | Az alapértelmezett érték. Ne indítsa újra a tárolót, hanem három egymást követő rendelkezésre állási ellenőrzés után jelentse be a tároló Docker-naplóiban. |
Kikapcsolva | Ne ellenőrizze a rendelkezésre állást. |
Csoport által felügyelt szolgáltatásfiókok támogatása
A csoportosan felügyelt szolgáltatásfiókok (gMSA-k) jelenleg nem támogatottak az App Service Windows-tárolóiban.
SSH engedélyezése
A Secure Shellt (SSH) gyakran használják rendszergazdai parancsok parancssori terminálról távolról történő végrehajtására. Ahhoz, hogy az Azure Portal SSH-konzolfunkciója egyéni tárolókkal legyen engedélyezve, a következő lépések szükségesek:
Hozzon létre egy standard
sshd_config
fájlt a következő példatartalommal, és helyezze el az alkalmazásprojekt gyökérkönyvtárában:Port 2222 ListenAddress 0.0.0.0 LoginGraceTime 180 X11Forwarding yes Ciphers aes128-cbc,3des-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr MACs hmac-sha1,hmac-sha1-96 StrictModes yes SyslogFacility DAEMON PasswordAuthentication yes PermitEmptyPasswords no PermitRootLogin yes Subsystem sftp internal-sftp
Feljegyzés
Ez a fájl konfigurálja az OpenSSH-t, és a következő elemeket kell tartalmaznia az Azure Portal SSH-funkciójának való megfeleléshez:
Port
2222-nek kell lennie.- A
Ciphers
beállításnak tartalmaznia kell legalább egy elemet a következő listából:aes128-cbc,3des-cbc,aes256-cbc
. - A
MACs
beállításnak tartalmaznia kell legalább egy elemet a következő listából:hmac-sha1,hmac-sha1-96
.
Hozzon létre egy entrypoint-szkriptet a névvel
entrypoint.sh
(vagy módosítsa a meglévő belépésipont-fájlt), és adja hozzá a parancsot az SSH szolgáltatás elindításához az alkalmazás indítási parancsával együtt. Az alábbi példa egy Python-alkalmazás elindítását mutatja be. Cserélje le az utolsó parancsot a projekt nyelvének/veremének megfelelően:Adja hozzá a Dockerfile-hoz az alábbi utasításokat az alaprendszerkép-eloszlásnak megfelelően. Ezek az utasítások átmásolják az új fájlokat, telepítik az OpenSSH-kiszolgálót, beállítják a megfelelő engedélyeket, konfigurálják az egyéni belépési pontot, és elérhetővé teszik az alkalmazás és az SSH-kiszolgáló által igényelt portokat:
COPY entrypoint.sh ./ # Start and enable SSH RUN apt-get update \ && apt-get install -y --no-install-recommends dialog \ && apt-get install -y --no-install-recommends openssh-server \ && echo "root:Docker!" | chpasswd \ && chmod u+x ./entrypoint.sh COPY sshd_config /etc/ssh/ EXPOSE 8000 2222 ENTRYPOINT [ "./entrypoint.sh" ]
Feljegyzés
A gyökérjelszónak pontosan
Docker!
úgy kell lennie, ahogyan azt az App Service használja, hogy hozzáférhessen az SSH-munkamenethez a tárolóval. Ez a konfiguráció nem teszi lehetővé a tároló külső kapcsolatait. A tároló 2222-s portja csak egy magánhálózat hídhálózatán belül érhető el, és nem érhető el a támadók számára az interneten.Újraépítheti és leküldheti a Docker-rendszerképet a beállításjegyzékbe, majd tesztelheti a Web App SSH-funkcióját az Azure Portalon.
További hibaelhárítási információk a Azure-alkalmazás szolgáltatás blogján érhetők el: Az SSH engedélyezése Linux Web App for Containers rendszeren
Diagnosztikai naplók elérése
A tárolón belülről létrehozott konzolnaplókhoz hozzáférhet.
Először kapcsolja be a tárolónaplózást a következő parancs futtatásával:
az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem
Cserélje le és <resource-group-name>
írja be <app-name>
a webalkalmazásnak megfelelő neveket.
A tárolónaplózás bekapcsolása után futtassa a következő parancsot a naplóstream megtekintéséhez:
az webapp log tail --name <app-name> --resource-group <resource-group-name>
Ha nem jelennek meg azonnal a konzolnaplófájlok, ellenőrizze ismét 30 másodperc múlva.
Ha bármikor le szeretné állítani a naplóstreamelést, írja be a Ctrl C billentyűkombinációt.+
A naplófájlokat a böngészőben is megvizsgálhatja a következő helyen https://<app-name>.scm.azurewebsites.net/api/logs/docker
: .
Többtárolós alkalmazások konfigurálása
Feljegyzés
A Sidecar-tárolók (előzetes verzió) többtárolós alkalmazásokat fognak sikerrel elérni az App Service-ben. Első lépésként tekintse meg az oktatóanyagot: Egyéni tárolókhoz készült oldalkocsi-tároló konfigurálása Azure-alkalmazás szolgáltatásban (előzetes verzió).
- Állandó tárterület használata a Docker Compose-ban
- Előzetes verzióra vonatkozó korlátozások
- A Docker Compose beállításai
Állandó tárterület használata a Docker Compose-ban
A többtárolós alkalmazásoknak, például a WordPressnek állandó tárterületre van szükségük a megfelelő működéshez. Ennek engedélyezéséhez a Docker Compose-konfigurációnak a tárolón kívüli tárolóra kell mutatnia. A tárolón belüli tárolási helyek nem őriznek meg módosításokat az alkalmazás újraindítása után.
Engedélyezze az állandó tárolást az WEBSITES_ENABLE_APP_SERVICE_STORAGE
alkalmazásbeállítás beállításával, az az webapp config appsettings set paranccsal a Cloud Shellben.
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_ENABLE_APP_SERVICE_STORAGE=TRUE
A docker-compose.yml fájlban adja meg a lehetőséget${WEBAPP_STORAGE_HOME}
.volumes
A WEBAPP_STORAGE_HOME
egy környezeti változó az App Service szolgáltatásban, amely az alkalmazás állandó tárolójára mutat. Példa:
wordpress:
image: <image name:tag>
volumes:
- "${WEBAPP_STORAGE_HOME}/site/wwwroot:/var/www/html"
- "${WEBAPP_STORAGE_HOME}/phpmyadmin:/var/www/phpmyadmin"
- "${WEBAPP_STORAGE_HOME}/LogFiles:/var/log"
Előzetes verzióra vonatkozó korlátozások
A többtárolós tároló jelenleg előzetes verzióban érhető el. A következő App Service-platformfunkciók nem támogatottak:
- Hitelesítés / engedélyezés
- Felügyelt identitások
- CORS
- A Docker Compose-forgatókönyvek esetében a virtuális hálózati integráció nem támogatott
- A Docker Compose jelenleg 4000 karakterből áll a Azure-alkalmazás-szolgáltatásokban.
A Docker Compose beállításai
Az alábbi listák a Docker Compose támogatott és nem támogatott konfigurációs beállításait jelenítik meg:
Támogatott beállítások
- command
- entrypoint
- környezet
- rendszerkép
- ports
- restart
- services
- kötetek (az Azure Storage-ra való leképezés nem támogatott)
Nem támogatott beállítások
- build (nem engedélyezett)
- depends_on (figyelmen kívül hagyva)
- networks (figyelmen kívül hagyva)
- secrets (figyelmen kívül hagyva)
- a 80 és 8080 porttól eltérő portok (figyelmen kívül hagyva)
- alapértelmezett környezeti változók, például
$variable and ${variable}
a Dockerben
Szintaxiskorlátozások
- Az x.x verziónak mindig az első YAML-utasításnak kell lennie a fájlban
- a portszakasznak idézőszámokat kell használnia
- a képkötet > szakaszát idézni kell, és nem rendelkezhet engedélydefiníciókkal
- a kötetek szakaszának nem lehet üres kapcsos zárójele a kötet neve után
Feljegyzés
A nyilvános előzetes verzió figyelmen kívül hagyja a nem explicit módon kikiáltott egyéb beállításokat.
robots933456 a naplókban
A következő üzenet jelenhet meg a tárolónaplókban:
2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"
Az üzenet biztonságosan figyelmen kívül hagyható. /robots933456.txt
egy olyan próba URL-cím, amelyet az App Service annak a vizsgálatára használ, hogy a tároló képes-e a kérések kiszolgálására. A 404-es válasz egyszerűen azt jelenti, hogy a cím nem létezik, azonban jelzi az App Service számára, hogy a tároló kifogástalan állapotú, és készen áll a kérések megválaszolására.
Következő lépések
Oktatóanyag: Egyéni szoftverek migrálása Azure-alkalmazás szolgáltatásba egyéni tároló használatával
Vagy tekintse meg a további erőforrásokat: