Mă lupt de peste o săptămână să fac un container Windows care să ruleze cu un serviciu de aplicații Azure. Preferința mea inițială a fost să folosesc doar o instanță de container standard, dar se pare că aveți doar opțiunea de rețea publică sau privată, mai degrabă decât personalizată (spre deosebire de containerele Linux). Se pare că dacă rulați containerul Windows într-un serviciu de aplicație, veți obține aceleași opțiuni de rețea pe care le obțineți cu alte site-uri web. Suportul Azure pentru containerele Windows din App Services este aproape un an, dar relativ puține resurse o abordează, în afară de scenarii foarte de bază.
Scopul meu în utilizarea unui container este să rulez la cerere un serviciu Windows de fundal terță parte, fără suprasarcina unei VM. Deoarece folosește un serviciu de aplicație, am decis să adaug un punct final de odihnă de bază asp.net pentru câteva informații despre stare. Containerul meu se bazează pe mcr.microsoft.com/windows/servercore:ltsc2019
. Descărc și instalez .net și asp.net core (imaginea de bază are doar .net framework), îmi instalez serviciile, construiesc și rulez site-ul web, apoi punctul meu de intrare este un script Powershell care actualizează unele valori de configurare și rulează asp. punct final net core care gestionează serviciile.
Dacă folosesc portalul, pot selecta opțiunile pentru container vs cod, Windows vs Linux și pot începe lucrurile cu imaginea de pornire rapidă de bază, dar propria mea imagine din Azure Container Registry nu pornește corect. Eu folosesc unul dintre imagini de bază acceptate, și funcționează bine pe mașina mea locală. Pe Azure, creează totul, dar nu pornește niciodată. Cantitatea mică de înregistrare indică faptul că pornește, montează volume de partajare a fișierelor, apoi practic moare:
- Creați container pentru imagine
- Încercarea de a porni containerul
- Pornirea containerului a reușit
- Containerul a pornit
- Apelați utilitarul de configurare a containerului
- Configurarea utilitarului containerului a fost finalizată
- Containerul a pornit
- Încercarea de a opri containerul
- Încercarea de a termina containerul
- Încercarea de a scoate recipientul
- Containerul a fost eliminat cu succes
De asemenea, ciudat, chiar și cu imaginea de pornire rapidă, nu văd o instanță Container reală. Probabil că acest lucru se datorează faptului că rulează direct în Planul App Service, deși nimic nu este foarte clar. Din aplicația web, pot merge la App Service Plan (planul Windows Containers) unde, sub Aplicații, arată o singură aplicație cu tipul de „aplicație, container, ferestre”, dar nicăieri nu găsesc acces pentru a vizualiza jurnalele consolei sau rulați un shell așa cum pot cu resurse de tip Container Image. În unele capturi de ecran pe care le-am întâlnit, pot vedea un link „Setări container” sub „Setări”, pe care nu îl am, dar poate că este doar pentru containerele Linux dintr-un anumit motiv.
Deci, cum ar trebui să depanez problemele legate de container când rulez într-un serviciu de aplicație? Oare imi scapa ceva undeva?