Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure App Service, Windows üzerinde ASP.NET veya Node.js gibi önceden tanımlanmış uygulama yığınları sağlar. Bu uygulama yığınları IIS üzerinde çalışır. Önceden yapılandırılmış Windows ortamı işletim sistemini aşağıdakilere karşı kısıtlar:
- Yönetim erişimi.
- Yazılım yüklemeleri.
- Genel derleme önbelleğinde yapılan değişiklikler.
Daha fazla bilgi için bkz. App Service'te işletim sistemi işlevselliği.
Uygulamanızın ihtiyaç duyduğu işletim sistemi değişikliklerini yapmak için Visual Studio'dan özel olarak yapılandırılmış bir Windows görüntüsü dağıtabilirsiniz. Bunu yapmak, özel işletim sistemi ve yazılım yapılandırması gerektiren bir şirket içi uygulamayı taşımayı kolaylaştırır. Bu öğretici, Windows yazı tipi kitaplığında yüklü özel yazı tiplerini kullanan bir ASP.NET uygulamasının App Service'e nasıl geçirileceğini gösterir. Visual Studio'dan Azure Container Registry'ye özel olarak yapılandırılmış bir Windows görüntüsü dağıtıp App Service'te çalıştırırsınız.
Önkoşullar
- Docker Hub hesabı oluşturun.
- Docker for Windows'u yükleyin.
- Docker'ı Windows kapsayıcılarını çalıştırmak için yapılandırın.
-
Visual Studio 2022'yiASP.NET ve web geliştirme ve Azure geliştirme iş yükleriyle yükleyin. Visual Studio 2022 zaten yüklüyse:
- Yardım>Güncelleştirmeleri Denetle seçeneğini belirleyerek Visual Studio’daki en son güncelleştirmeleri yükleyin.
- Visual Studio'da ToolsGet Tools and Features seçeneğini belirleyerek iş yüklerini ekleyin.
Uygulamayı yerel ortamda kurma
Örneği indir
Bu adımda yerel .NET projesini ayarlarsınız.
- Örnek projeyi indirin.
- custom-font-win-container-master.zip dosyasını ayıklayın (sıkıştırmasını açın).
Örnek proje, Windows yazı tipi kitaplığına yüklenmiş özel bir yazı tipi kullanan basit bir ASP.NET uygulaması içerir. Yazı tiplerinin yüklenmesi gerekmez. Ancak örnek, temel işletim sistemiyle tümleştirilmiş bir uygulama örneğidir. Bu tür bir uygulamayı App Service'e geçirmek için kodunuzu yeniden düzenleyip tümleştirmeyi kaldırabilir veya özel bir Windows kapsayıcısında olduğu şekliyle geçirebilirsiniz.
Yazı tipini yükleyin
Windows Gezgini'nde custom-font-win-container-master/CustomFontSample'a gidin, FrederickatheGreat-Regular.ttf dosyasına sağ tıklayın ve Yükle'yi seçin.
Bu yazı tipi Google Fonts sayfasında genel kullanıma açık bir şekilde sunulmaktadır.
Uygulamayı çalıştırın
Visual Studio'da custom-font-win-container-master/CustomFontSample.sln dosyasını açın.
Uygulamayı hata ayıklamadan çalıştırmak için Ctrl+F5 tuşlarına basın. Uygulama varsayılan tarayıcınızda görüntülenir.
Uygulama yüklü bir yazı tipi kullandığından, uygulama App Service korumalı alanında çalıştırılamaz. Ancak, yazı tipini Windows kapsayıcısında yükleyebildiğiniz için bunu bunun yerine bir Windows kapsayıcısı kullanarak dağıtabilirsiniz.
Windows kapsayıcısını yapılandırın
Çözüm Gezgini'nde CustomFontSample projesine sağ tıklayın ve Ekle>Kapsayıcı Düzenleme Desteği seçeneğini belirleyin.
Docker Compose>Tamam'ı seçin.
Projeniz artık bir Windows kapsayıcısında çalışacak şekilde ayarlanmıştır. Bir DockerfileCustomFontSample projesine eklenir ve çözüme bir docker-compose projesi eklenir.
Çözüm Gezgini'nden Dockerfile'ı açın.
Desteklenen bir ana görüntü kullanmanız gerekir.
FROM satırını aşağıdaki kod ile değiştirerek üst kapsayıcı görüntüyü değiştirin:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
Dosyanın sonuna aşağıdaki satırı ekleyin ve dosyayı kaydedin:
RUN ${source:-obj/Docker/publish/InstallFont.ps1}
InstallFont.ps1 dosyasını CustomFontSample projesinde bulabilirsiniz. Yazı tipini yükleyen basit bir betiktir. Betiğin daha karmaşık bir sürümünü PowerShell Galerisi'nde bulabilirsiniz.
Not
Windows kapsayıcısını yerel olarak test etmek için Docker'ın yerel makinenizde başlatıldığından emin olun.
Azure Container Registry'ye yayımla
Azure Container Registry, kapsayıcı dağıtımlarınız için imajlarınızı depolayabilir. App Service'i Container Registry'de barındırılan imajları kullanacak şekilde yapılandırabilirsiniz.
Yayımla penceresini aç
Çözüm Gezgini'nde CustomFontSample projesine sağ tıklayın ve Yayımla'yı seçin.
Kayıt defterini oluşturun ve yayımlayın
Yayımla penceresinde önce Azure'ı, ardından İleri'yi seçin.
Azure Container Registry'yi ve ardından İleri'yi seçin.
Kayıt deposunu yayımlamak istediğiniz aboneliği seçin ve ardından Yeni oluştur seçin.
Azure hesabıyla oturum aç
Azure Container Registry penceresinde Hesap ekle'yi seçin ve ardından Azure aboneliğinizle oturum açın. Zaten oturum açtıysanız açılan listeden istediğiniz aboneliği içeren hesabı seçin.
Kayıt defterini yapılandırın
Aşağıdaki tabloda önerilen değerleri kılavuz olarak kullanarak yeni kapsayıcı kayıt defterini yapılandırın. Bittiğinde Oluştur’u seçin.
| Ayar | Önerilen değer |
|---|---|
| DNS ön eki | Oluşturulan kayıt adını kullanın veya başka bir benzersiz adla değiştirin. |
| Kaynak Grubu | Yeni'yi seçin, myResourceGroup yazın ve tamam'ı seçin. |
| SKU | Temel. Daha fazla bilgi için bkz. Fiyatlandırma katmanları. |
| Kayıt Defteri Konumu | Batı Avrupa |
Bitirseçin.
Bir terminal penceresi açılır ve imaj dağıtım ilerleme durumunu görüntüler. Dağıtımın tamamlanmasını bekleyin.
Azure'da oturum aç
Azure Portal’ında oturum açın.
Web uygulaması oluştur
Kaynak oluştur'u ve ardından Oluştur'uWeb Uygulaması'nın altında seçin.
Uygulamanın temel ayarlarını yapılandırın
Temel Bilgiler sekmesinde, aşağıdaki tabloyu kılavuz olarak kullanarak ayarları yapılandırın.
| Ayar | Önerilen değer |
|---|---|
| Abonelik | Doğru aboneliğin seçili olduğundan emin olun. |
| Kaynak Grubu | Yeni oluştur seçin, myResourceGroup yazın ve Tamam seçin. |
| Ad | Benzersiz bir ad girin. Web uygulamasının URL'si https://<app-name>.azurewebsites.net şeklindedir; burada <app-name>, uygulamanızın adıdır. |
| Yayınla | Kapsayıcı |
| İşletim Sistemi | Windows |
| Bölge | Batı Avrupa |
| Windows Plan | Yeni oluştur'u seçin, myAppServicePlan yazın ve OK'i seçin. |
Temel Bilgiler sekmeniz şuna benzer olmalıdır:
Windows kapsayıcısını yapılandırın
Kapsayıcı sekmesinde, aşağıdaki tabloda gösterildiği gibi özel Windows kapsayıcınızı yapılandırın ve ardından Gözden geçir + oluştur seçeneğini belirleyin.
| Ayar | Önerilen değer |
|---|---|
| Görüntü Kaynağı | Azure Container Registry |
| Kayıt Defteri | Daha önce oluşturduğunuz kayıt defterini seçin. |
| Görsel | customfontsample |
| Tag | en son |
Uygulama oluşturmayı tamamlayın
Oluştur'u seçin ve Azure'ın gerekli kaynakları oluşturmasını bekleyin.
Web uygulamasına gidin
Dağıtım tamamlandığında bir bildirim iletisi görüntülenir:
Kaynağa git’i seçin.
Uygulama sayfasında URL'nin altındaki bağlantıyı seçin.
Aşağıdaki sayfaya yeni bir tarayıcı sayfası açılır:
Birkaç dakika bekleyin ve beklediğiniz yazı tipini içeren giriş sayfasını edinene kadar yeniden deneyin:
Tebrikler! Bir ASP.NET uygulamasını Bir Windows kapsayıcısında App Service'e geçirdiniz.
Kapsayıcı başlangıç günlüklerini görüntüleyin
Windows kapsayıcısının yüklenmesi biraz zaman alabilir. İlerleme durumunu görmek için aşağıdaki URL'ye gidin. (<uygulama-adı> yerine uygulamanızın adını yazın.)
https://<app-name>.scm.azurewebsites.net/api/logstream
Akış logları şöyle görünür:
14/09/2018 23:16:19.889 INFO - Site: fonts-win-container - Creating container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest.
14/09/2018 23:16:19.928 INFO - Site: fonts-win-container - Create container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest succeeded. Container Id 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:23.405 INFO - Site: fonts-win-container - Start container succeeded. Container: 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Configuring container
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container start-up and configuration completed successfully
Azure App Service, hem yerleşik imajları hem de özel imajları barındırmak için Docker kapsayıcı teknolojisini kullanır. Yerleşik görüntülerin listesini görmek için az webapp list-runtimes --os linux adlı Azure CLI komutunu çalıştırın. Bu görüntüler gereksinimlerinizi karşılamıyorsa özel görüntü derleyebilir ve dağıtabilirsiniz.
Not
Kapsayıcınız x86-64 mimarisini hedeflemelidir. ARM64 desteklenmez.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Azure Container Registry'ye özel bir Docker görüntüsü gönderin.
- Özel imajı App Service'e dağıtın.
- Ortam değişkenlerini yapılandırın.
- Yönetilen kimlik kullanarak görüntüyü App Service'e çekin.
- Tanılama günlüklerine erişin.
- Container Registry'den App Service'e CI/CD'yi etkinleştirin.
- SSH kullanarak kapsayıcıya bağlanın.
Bu öğreticinin tamamlanması, kapsayıcı kayıt defteri için Azure hesabınızda küçük bir ücrete neden olur ve kapsayıcıyı bir aydan uzun süre barındırıyorsanız daha fazla maliyete neden olabilir.
İlk ortamınızı ayarlayın
Bu öğretici, Azure CLI'nın 2.0.80 veya sonraki bir sürümünü gerektirir. Azure Cloud Shell kullanıyorsanız en son sürüm zaten yüklüdür.
- Etkin aboneliği olan bir Azure hesabınız olduğundan emin olun. Ücretsiz hesap oluşturun.
Azure Cloud Shell içinde Bash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell'i kullanmaya başlama.
CLI referans komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin. Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz. Docker kapsayıcısında Azure CLI'yi çalıştırma.
Yerel kurulum kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz. Azure CLI kullanarak Azure'da kimlik doğrulaması.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma ve yönetme.
Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
- Docker'ı yükleyin. Docker görüntüleri oluşturmak için kullanırsınız. Docker'ın yüklenmesi için bilgisayarın yeniden başlatılması gerekebilir.
Docker'ı yükledikten sonra bir terminal penceresi açın ve Docker'ın yüklü olduğunu doğrulayın:
docker --version
Örnek uygulamayı klonlayın veya indirin
Bu öğreticinin örneğini Git ile klonlama veya indirme yoluyla edinebilirsiniz.
Git Bash kullanarak repoyu klonlayın
Örnek depoyu kopyalayın:
git clone https://github.com/Azure-Samples/docker-django-webapp-linux.git --config core.autocrlf=input
Linux kapsayıcısının içinde kullanılan dosyalarda doğru satır sonlarını garanti etmek için --config core.autocrlf=input bağımsız değişkenini eklediğinizden emin olun.
Ardından klasöre gidin:
cd docker-django-webapp-linux
GitHub'dan ZIP'i indir
Git clone kullanmak yerine https://github.com/Azure-Samples/docker-django-webapp-linux adresine gidip Code>Yerel>İndirme ZIP'i seçebilirsiniz.
ZIP dosyasını docker-django-webapp-linux adlı bir klasöre açın.
Ardından docker-django-webapp-linux klasöründe bir terminal penceresi açın.
Numune kabını hazırlayın
Daha yeni tarayıcı terminali ve az webapp exec çalışan Linux konteynerlerine SSH sunucusu veya imajda gömülü SSH şifresi gerektirmeden kimlik doğrulamalı erişim sağlar. Eski Kudu WebSSH ve az webapp ssh erişim için yine de bir SSH sunucusu gerekebilir. Örnek deposu eski SSH kurulumunu içerir. Derlemeden önce, ilgili Dockerfile'ın içeriğini yalnızca uygulama için aşağıdaki yapılandırmayla değiştirin:
FROM tiangolo/uwsgi-nginx-flask:python3.6
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt --no-cache-dir
ADD . /code/
COPY init.sh /usr/local/bin/
RUN chmod u+x /usr/local/bin/init.sh
EXPOSE 8000
ENTRYPOINT ["init.sh"]
init.sh içeriğini aşağıdaki betikle değiştirin, Linux satır sonlarını koruyun:
#!/bin/bash
set -e
exec python /code/manage.py runserver 0.0.0.0:8000
Yerel örnek klasörünüzden eski sshd_config dosyasını kaldırın, böylece ADD . /code/ bunu imaja kopyalamasın.
Dockerfile uygulamanın bağımlılıklarını yükler, uygulamayı ve başlatma betiğini kopyalar ve uygulamanın portunu açığa çıkarır. Giriş noktası sadece Python uygulamasını başlatır. Bu değişiklikler, örneğe ait SSH kurulumunu ve kimlik bilgilerini kaldırıyor. Görüntü, yeni tarayıcı terminali için az webapp exec ve varsayılan /bin/bash shell içerir.
Görüntüyü yerel olarak derleyin ve test edin
Not
Docker Hub, IP başına anonim çekme sayısına ve ücretsiz kullanıcı başına kimliği doğrulanmış çekme sayısına kotalar uygular. Docker Hub'dan çekme işlemlerinizin sınırlı olduğunu fark ederseniz, henüz oturum açmadıysanız docker login komutunu çalıştırmayı deneyin.
Görüntüyü oluşturmak için aşağıdaki komutu çalıştırın:
docker build --tag appsvc-tutorial-custom-image .Docker kapsayıcısını yerel olarak çalıştırarak derlemenin çalışıp çalışmadığını test edin:
docker run -it -p 8000:8000 appsvc-tutorial-custom-imageBu
docker runkomut,-pbağımsız değişkenini kullanarak bağlantı noktasını belirtir ve görüntünün adını içerir.-itbunu Ctrl+C tuşlarını kullanarak durdurmanıza olanak tanır.İpucu
Windows üzerinde çalışıyorsanız ve *standard_init_linux.go:211: exec user process caused "no such file or directory," hatasını görürseniz, init.sh dosyası beklenen LF satır sonları yerine CRLF satır sonlarını içerir. Örnek depoyu kopyalamak için Git'i kullandıysanız ancak
--config core.autocrlf=inputparametresini atladıysanız bu hata oluşur. Bu durumda, depoyu--configbağımsız değişkeniyle yeniden kopyalayın. Ayrıca, init.sh düzenlediyseniz ve CRLF sonlarıyla kaydettiyseniz hatayı görebilirsiniz. Bu durumda, dosyayı yalnızca LF sonlarıyla yeniden kaydedin.Web uygulamasının ve kapsayıcının düzgün çalıştığını doğrulamak için
http://localhost:8000adresine gidin.
Kullanıcı tarafından atanan yönetilen kimlik oluşturun
App Service, kapsayıcı kayıt defteriyle kimlik doğrulaması yapmak için varsayılan yönetilen kimliği veya kullanıcı tarafından atanan yönetilen kimliği kullanabilir. Bu öğreticide, kullanıcı tarafından atanan bir yönetilen kimlik kullanacaksınız.
Kaynak grubu oluşturmak için az group create komutunu çalıştırın:
az group create --name msdocs-custom-container-tutorial --location westeuropeSize yakın bir bölge belirtmek için
--locationdeğerini değiştirebilirsiniz.Kaynak grubunda yönetilen kimlik oluşturun:
az identity create --name myID --resource-group msdocs-custom-container-tutorial
Konteyner kayıt defteri oluşturun
Aşağıdaki
az acr createkomutu kullanarak bir kapsayıcı kayıt deposu oluşturun. Kayıt defteriniz için benzersiz bir adla<registry-name>öğesini değiştirin. Ad yalnızca harf ve sayı içermelidir ve tüm Azure'da benzersiz olmalıdır.az acr create --name <registry-name> --resource-group msdocs-custom-container-tutorial --sku Basic --admin-enabled true--admin-enabledparametresi, yönetim kimlik bilgilerini kullanarak imajları kayıt deposuna göndermenize olanak tanır.komutunu çalıştırarak
az credential acr showyönetim kimlik bilgilerini alın:az acr credential show --resource-group msdocs-custom-container-tutorial --name <registry-name>Bu komutun JSON çıkışı, kayıt deposunun kullanıcı adıyla birlikte iki parola sağlar.
Örnek görüntüyü Container Registry'ye gönderin
Bu bölümde, imajı daha sonra App Service tarafından kullanılan Container Registry'ye gönderirsiniz.
Örnek görüntüyü oluşturduğunuz yerel terminalden kapsayıcı kayıt defterine oturum açmak için
docker loginkomutunu kullanın:docker login <registry-name>.azurecr.io --username <registry-username><registry-name>ve<registry-username>değerlerini önceki adımlardaki değerlerle değiştirin. İstendiğinde, önceki bölümdeki parolalardan birini yazın.Bu bölümün kalan tüm adımlarında aynı kayıt defteri adını kullanın.
Oturum açma işlemi başarılı olduğunda yerel Docker görüntünüzü registry’ye etiketleyin:
docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestGörüntüyü registry'ye göndermek için
docker pushkomutunu kullanın:docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestTemel görüntüyü içerdiğinden görüntüyü ilk kez karşıya yüklemek birkaç dakika sürebilir. Sonraki karşıya yüklemeler genellikle daha hızlıdır.
Beklerken, App Service'i kayıt deposundan dağıtılacak şekilde yapılandırmak için sonraki bölümdeki adımları tamamlayabilirsiniz.
Kayıt deponuz için yönetilen kimliği yetkilendirin
Oluşturduğunuz yönetilen kimliğin henüz kapsayıcı kayıt defterinden çekme yetkisi yok. Bu adımda kimlik doğrulamayı etkinleştirirsiniz.
Yönetilen kimliğin principal kimlik tanımlayıcısını alın:
principalId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query principalId --output tsv)Kapsayıcı kayıt defteri için kaynak kimliğini alın:
registryId=$(az acr show --resource-group msdocs-custom-container-tutorial --name <registry-name> --query id --output tsv)Yönetilen kimliğe kapsayıcı deposuna erişim izni verin:
az role assignment create --assignee $principalId --scope $registryId --role "AcrPull"Bu izinler hakkında daha fazla bilgi için bkz. Azure rol tabanlı erişim denetimi nedir?.
Web uygulaması oluşturun
az appservice plan createkomutunu kullanarak bir App Service planı oluşturun:az appservice plan create --name myAppServicePlan --resource-group msdocs-custom-container-tutorial --is-linuxApp Service planı, web uygulamasını barındıran sanal makineye karşılık gelir. Varsayılan olarak, önceki komut ilk ay için ücretsiz olan uygun maliyetli bir B1 fiyatlandırma katmanı kullanır.
--skuparametresini kullanarak seviyeyi belirtebilirsiniz.Web uygulamasını şu komutla
az webapp createoluşturun:az webapp create --resource-group msdocs-custom-container-tutorial --plan myAppServicePlan --name <app-name> --deployment-container-image-name <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest<app-name>öğesini web uygulaması için bir adla değiştirin. Bu ad Azure genelinde benzersiz olmalıdır. Ayrıca<registry-name>öğesini önceki bölümde yer alan kayıt defterinizin adıyla değiştirin.İpucu
Web uygulamasının kapsayıcı ayarlarını istediğiniz zaman
az webapp config container show --name <app-name> --resource-group msdocs-custom-container-tutorialkomutuyla alabilirsiniz. Görüntü,DOCKER_CUSTOM_IMAGE_NAMEözelliğinde belirtilir. Web uygulaması Azure DevOps veya Azure Resource Manager şablonları aracılığıyla dağıtıldığında, görüntü adıLinuxFxVersionolan bir özellikte de görüntülenebilir. Her iki özellik de aynı amaca hizmet eder. Her ikisi de web uygulamasının yapılandırmasında varsaLinuxFxVersionönceliklidir.
Web uygulamasını yapılandırın
Bu adımda, web uygulamasını aşağıdaki gibi yapılandıracaksınız:
- Uygulamayı 8000 numaralı bağlantı noktasına istek gönderecek şekilde yapılandırın. Örnek kapsayıcı, web istekleri için 8000 numaralı bağlantı noktasında dinliyor.
- Kapsayıcı kayıt defterinizden görüntü çekmek için uygulamanızı yönetilen kimliği kullanacak şekilde yapılandırın.
- Kapsayıcı kayıt deposundan sürekli dağıtımı yapılandırın. (Registry'ye yapılan her imaj gönderimi, uygulamanızın yeni imajı pull etmesini tetikler.) Bu adım, web uygulamanızı container registry'nizden pull edecek şekilde yapılandırmak için gerekli değildir, ancak registry'ye yeni bir imaj gönderildiğinde web uygulamasını bilgilendirebilir. Bu adımı tamamlamazsanız, web uygulamasını yeniden başlatarak bir imaj çekme işlemini el ile tetiklemeniz gerekir.
Beklendiği gibi uygulama kodu tarafından kullanılan
WEBSITES_PORTortam değişkenini ayarlamak içinaz webapp config appsettings setkullanın:az webapp config appsettings set --resource-group msdocs-custom-container-tutorial --name <app-name> --settings WEBSITES_PORT=8000<app-name>öğesini önceki adımda kullandığınız adla değiştirin.az webapp identity assignkomutunu kullanarak web uygulamasında kullanıcı tarafından atanan yönetilen kimliği etkinleştirin:id=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query id --output tsv) az webapp identity assign --resource-group msdocs-custom-container-tutorial --name <app-name> --identities $id<app-name>öğesini önceki adımda kullandığınız adla değiştirin.Yönetilen kimlikleri kullanarak uygulamanızı Container Registry'den çekmesi için yapılandırın.
appConfig=$(az webapp config show --resource-group msdocs-custom-container-tutorial --name <app-name> --query id --output tsv) az resource update --ids $appConfig --set properties.acrUseManagedIdentityCreds=True<app-name>öğesini önceki adımda kullandığınız adla değiştirin.Web uygulamanızın Container Registry'den çekmek için kullandığı istemci kimliğini ayarlayın. Sistem tarafından atanan yönetilen kimliği kullanıyorsanız bu adım gerekli değildir.
clientId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query clientId --output tsv) az resource update --ids $appConfig --set properties.AcrUserManagedIdentityID=$clientIdApp Service'te CI/CD'yi etkinleştirin.
cicdUrl=$(az webapp deployment container config --enable-cd true --name <app-name> --resource-group msdocs-custom-container-tutorial --query CI_CD_URL --output tsv)CI_CD_URL, App Service'in sizin için oluşturduğu bir URL'dir. Kapsayıcı kayıt defteriniz, App Service'e imaj gönderiminin gerçekleştiğini bildirmek için bu URL'yi kullanmalıdır. Aslında sizin için webhook oluşturmaz.Kapsayıcı kayıt defterinizde bir webhook oluşturun. Son adımda aldığınız CI_CD_URL'yi kullanın.
az acr webhook create --name appserviceCD --registry <registry-name> --uri $cicdUrl --actions push --scope appsvc-tutorial-custom-image:latestWebhook’unuzun düzgün yapılandırılıp yapılandırılmadığını test etmek için webhook’a ping yapın ve 200 Tamam yanıtı alıp almadığınıza bakın.
eventId=$(az acr webhook ping --name appserviceCD --registry <registry-name> --query id --output tsv) az acr webhook list-events --name appserviceCD --registry <registry-name> --query "[?id=='$eventId'].eventResponseMessage"İpucu
Tüm web kancası olayları hakkındaki tüm bilgileri görmek için
--queryparametresini kaldırın.Kapsayıcı günlüğünü akışla aktarıyorsanız, web kancası uygulamanın yeniden başlamasını tetiklediği için web kancası ping'inden sonra bir
Starting container for siteiletisi görmeniz gerekir.
Web uygulamasına gidin
Uygulamayı test etmek için https://<app-name>.azurewebsites.net adresine gidin.
<app-name> değerini web uygulamanızın adıyla değiştirin.
Uygulamaya ilk kez erişmeye çalıştığınızda, App Service'in görüntünün tamamını registry'den çekmesi gerektiğinden uygulamanın yanıt vermesi biraz zaman alabilir. Tarayıcı zaman aşımına uğradıysa sayfayı yenileyin. İlk imaj çekildikten sonra sonraki testler çok daha hızlı çalışır.
Tanılama günlüklerine erişim
App Service'in imajı çekmesini beklerken, kapsayıcı günlüklerini terminalinize akışla aktararak App Service'in tam olarak ne yaptığını görmeniz yararlı olur.
Kapsayıcı günlüğünü açın:
az webapp log config --name <app-name> --resource-group msdocs-custom-container-tutorial --docker-container-logging filesystemGünlük akışını etkinleştirin:
az webapp log tail --name <app-name> --resource-group msdocs-custom-container-tutorialKonsol günlüklerini hemen görmüyorsanız, 30 saniye sonra yeniden kontrol edin.
Ayrıca
https://<app-name>.scm.azurewebsites.net/api/logs/dockeradresine giderek günlük dosyalarını bir tarayıcıdan inceleyebilirsiniz.Günlük akışını istediğiniz zaman durdurmak için Ctrl+C tuşlarına basın.
Uygulama kodunu değiştirin ve yeniden dağıtın
Bu bölümde web uygulaması kodunda bir değişiklik yapacak, imajı yeniden derleyip kapsayıcı kayıt defterinize gönderebilirsiniz. Ardından App Service, çalışan web uygulamasını güncelleştirmek için güncelleştirilmiş görüntüyü kapsayıcı kayıt defterinden otomatik olarak çeker.
Yerel docker-django-webapp-linux klasörünüzde app/templates/app/index.html dosyasını açın.
İlk HTML öğesini aşağıdaki kodla eşleşecek şekilde değiştirin.
<nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <a class="navbar-brand" href="#">Azure App Service - Updated Here!</a> </div> </div> </nav>Değişikliklerinizi kaydedin.
docker-django-webapp-linux klasörüne gidin ve imajı yeniden oluşturun:
docker build --tag appsvc-tutorial-custom-image .Görüntünün etiketini
latestolarak güncelleştirin:docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest<registry-name>öğesini kaydınızın adıyla değiştirin.Görüntüyü registry'ye gönderin:
docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestİmaj gönderme işlemi tamamlandığında webhook, App Service'e gönderme hakkında bildirimde bulunur ve App Service güncelleştirilmiş görüntüyü çekmeye çalışır. Birkaç dakika bekleyin ve ardından
https://<app-name>.azurewebsites.netöğesine giderek güncelleştirmenin dağıtıldığını doğrulayın.
SSH kullanarak kapsayıcıya bağlanın
Konteyner çalışırken, App Service'in kimlik doğrulamalı Kudu proxy'si üzerinden yeni tarayıcı terminalini veya az webapp exec kullanarak buna erişebilirsiniz. Bu seçenekler için imajda SSH sunucusu kurmanıza veya başlatmanıza gerek yok.
Erişim önkoşulları ve uygulama veya slot kontrolleri için bkz. Kapsayıcı kabuğu açma (SSH) ve komutları çalıştırma.
Kapsayıcıya SSH bağlantısını açın
Azure CLI 2.90.0 veya daha yeni sürümleri kullanarak Azure hesabınıza giriş yapın. Yerel terminalinizde önizleme
az webapp execkomutuyla etkileşimli bir shell açın:az webapp exec --resource-group msdocs-custom-container-tutorial --name <app-name>Uygulamada çalışan süreçleri, eğer görselde mevcutsa, kullanarak
topinceleyin.
Etkileşimli oturum yerine ayrık komut çalıştırma için bkz. Komutları etkileşimli oturum olmadan çalıştır. Talep kabul edilmesi, bir komutun başarıyla tamamlandığını doğrulamaz.
Kaynakları temizleyin
Bu makalede oluşturduğunuz kaynaklar devam eden maliyetler doğurabilir. Kaynakları temizlemek için yalnızca bunları içeren kaynak grubunu silmeniz gerekir:
az group delete --name msdocs-custom-container-tutorial
Sonraki adımlar
Öğrendikleriniz:
- Özel bir imajı özel bir kapsayıcı kayıt deposuna dağıtın.
- Özel imajı App Service'e dağıtın.
- Görüntüyü güncelleştirin ve yeniden dağıtın.
- Tanılama günlüklerine erişin.
- SSH kullanarak kapsayıcıya bağlanın.
- Container Registry'ye özel bir Docker imajını gönderin.
- Özel imajı App Service'e dağıtın.
- Ortam değişkenlerini yapılandırın.
- Yönetilen kimlik kullanarak imajı App Service'e çekin.
- Tanılama günlüklerine erişin.
- Container Registry'den App Service'e CI/CD'yi etkinleştirin.
- SSH kullanarak kapsayıcıya bağlanın.
Sonraki öğreticiye gidin:
Veya diğer kaynaklara göz atın: