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.
Bu makalede, tercih ettiğiniz programlama dilinde makinenizdeki kaynak koddan Azure Container Apps'e uygulama derleme ve dağıtma adımları gösterilmektedir.
Bu öğreticide şunlarız:
- Basit bir web uygulaması oluşturun.
- Uygulamanız için ilişkili bir Dockerfile oluşturun.
- Derlenen koddan bir görüntü oluşturun ve bunu bir kapsayıcı kayıt defterine gönderin.
- Kapsayıcı kayıt defterinize güvenli bir şekilde erişmek için yönetilen kimliği kullanın.
- Kapsayıcınızı Azure Container Apps'e dağıtın.
- Dağıtımı doğrulamak için uygulamanızı tarayıcıda görüntüleyin.
Önkoşullar
Bu projeyi tamamlamak için aşağıdaki öğeler gerekir:
| Gereksinim | Yönergeler |
|---|---|
| Azure hesabı |
Hesabınız yoksa ücretsiz bir hesap oluşturun. Devam etmek için Azure aboneliğinde Katkıda Bulunan veya Sahip iznine sahip olmanız gerekir. Ayrıntılar için Bkz. Azure portalını kullanarak Azure rolleri atama. |
| Azure CLI | Azure CLI'yi yükleyin veya en son sürüme yükseltin. Azure Geliştirici CLI'sı (azd komutlar), Azure CLI aracılığıyla kullanılabilir. |
Dil seçiminize bağlı olarak uygun çalışma zamanını, SDK'yı ve diğer bağımlılıkları da yüklemeniz gerekebilir.
Yerel uygulamayı oluşturma
Aşağıdaki adımlarda, Azure Container Apps'te dağıtılacak örnek bir uygulama oluşturmak için gereken kod ve bağımlılıklar gösterilmektedir.
Not
Listelenenlerden farklı bir dil kullanmak istiyorsanız tercih ettiğiniz yapay zeka modeline aşağıdaki istemi girin.
İstemi göndermeden önce öğesini seçtiğiniz dille değiştirin <LANGUAGE> .
Generate the simplest possible "hello world" web server in idiomatic <LANGUAGE>.
Make sure to include any dependencies required for the application to run locally and in production.
Kaynak kodunuzu oluşturun ve çalıştırın.
Yeni bir C# projesi oluşturun.
dotnet new webapp --name MyAcaDemo --language C#MyAcaDemo klasörüne geçin.
cd MyAcaDemoBir kod düzenleyicisinde açın
Program.csve içeriğini aşağıdaki kodla değiştirin.public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); webBuilder.UseUrls("http://*:8080"); }); }sınıfını
Programbu kodla uygulamak bir web uygulamasının temelini oluşturur. Ardından, bir web sayfasını yanıt olarak döndürmekten sorumlu bir sınıf oluşturun.Aynı klasörde adlı
Startup.csyeni bir dosya oluşturun ve aşağıdaki kodu girin.public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app) { app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { await context.Response.WriteAsync("Hello World!"); }); }); } }Artık web uygulamanıza bir istek gönderildiğinde "Merhaba Dünya!" metni döndürülür. Kodunuzun yerel makinenizde doğru şekilde çalıştığını doğrulamak için projenizi yayın yapılandırmasında derleyin.
dotnet build -c ReleaseArdından kodunuzun doğru uygulandığını doğrulamak için uygulamanızı çalıştırın.
dotnet run --configuration ReleaseUygulamanın beklendiği gibi çalıştığını doğruladıktan sonra yerel sunucuyu durdurabilir ve uygulamayı Container Apps'e dağıtabilmek için dockerfile oluşturmaya geçebilirsiniz.
MyAcaDemo klasöründe adlı
Dockerfilebir dosya oluşturun ve aşağıdaki içeriği ekleyin.FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY . . RUN dotnet publish -c Release -o /app/publish FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final WORKDIR /app COPY --from=build /app/publish . EXPOSE 8080 ENTRYPOINT ["dotnet", "MyAcaDemo.dll"]Kodunuz ve dockerfile'ınız hazır olduğuna göre uygulamanızı Azure Container Apps'e dağıtabilirsiniz.
Azure kaynakları oluşturma
Aşağıdaki komutla CLI'dan Azure'da oturum açın. Kimlik doğrulama işlemini tamamlamak için tüm istemleri izlediğinden emin olun.
az loginAzure CLI için Azure Container Apps uzantısını yükleyin veya güncelleştirin.
az extension add --name containerapp --upgradeNot
Komutları çalıştırdığınızda
az containerappeksik parametrelerle ilgili hatalar alırsanız Azure Container Apps uzantısının en son sürümünü yüklediğinizden emin olun.Azure CLI kurulumunuz tamamlandıktan sonra bir dizi ortam değişkeni tanımlayabilirsiniz.
Aşağıdaki komutu çalıştırmadan önce sağlanan değerleri gözden geçirin.
Konum Orta ABD olarak yapılandırılır, ancak isterseniz size en yakın konuma geçebilirsiniz.
LOCATION="CentralUS" RESOURCE_GROUP="my-demo-group" IDENTITY_NAME="my-demo-identity" ENVIRONMENT="my-demo-environment" REGISTRY_NAME="mydemoregistry$(openssl rand -hex 4)" CONTAINER_APP_NAME="my-demo-app"komutu,
mydemoregistry$(openssl rand -hex 4)kapsayıcı kayıt defteri adınız olarak kullanmak üzere rastgele bir dize oluşturur. Kayıt defteri adları genel olarak benzersiz olmalıdır, bu nedenle bu dize komutlarınızın başarıyla çalıştırılmasına yardımcı olur.Kapsayıcı uygulaması dağıtımınızla ilgili hizmetleri düzenlemek için bir kaynak grubu oluşturun.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --output noneKullanıcı tarafından atanan bir yönetilen kimlik oluşturun ve aşağıdaki komutlarla kimliğini alın.
İlk olarak yönetilen kimliği oluşturun.
az identity create \ --name $IDENTITY_NAME \ --resource-group $RESOURCE_GROUP \ --output noneŞimdi kimlik tanımlayıcısını daha sonra kullanmak üzere bir değişken olarak ayarlayın.
IDENTITY_ID=$(az identity show \ --name $IDENTITY_NAME \ --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)Aşağıdaki komutu kullanarak uygulamanızı barındırmak için bir Container Apps ortamı oluşturun.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --mi-user-assigned $IDENTITY_ID \ --output noneKaynak grubunuzda bir Azure Container Registry (ACR) örneği oluşturun. Kayıt defteri kapsayıcı görüntünüzü depolar.
az acr create \ --resource-group $RESOURCE_GROUP \ --name $REGISTRY_NAME \ --sku Basic \ --output noneAşağıdaki komutla kullanıcı tarafından atanan yönetilen kimliğinizi kapsayıcı kayıt defteri örneğine atayın.
az acr identity assign \ --identities $IDENTITY_ID \ --name $REGISTRY_NAME \ --resource-group $RESOURCE_GROUP \ --output none
Görüntüyü derleme ve kayıt defterine gönderme
Aşağıdaki komutla kapsayıcı görüntünüzü derleyin ve kapsayıcı kayıt defteri örneğine gönderin.
az acr build \
-t $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
-r $REGISTRY_NAME .
Bu komut, etiketi helloworld kapsayıcı görüntünüze uygular.
Kapsayıcı uygulamanızı oluşturma
Aşağıdaki komutla kapsayıcı uygulamanızı oluşturun.
az containerapp create \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT \
--image $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
--target-port 8080 \
--ingress external \
--user-assigned $IDENTITY_ID \
--registry-identity $IDENTITY_ID \
--registry-server $REGISTRY_NAME.azurecr.io \
--query properties.configuration.ingress.fqdn
Bu komut, rolü kullanıcı tarafından atanan yönetilen kimliğinize ekler acrPull , böylece kapsayıcı kayıt defterinizden görüntü çekebilir.
Aşağıdaki tabloda, bu komut tarafından kullanılan parametreler açıklanmaktadır.
| Parametre | Değer | Açıklama |
|---|---|---|
name |
$CONTAINER_APP_NAME |
Kapsayıcı uygulamanızın adı. |
resource-group |
$RESOURCE_GROUP |
Kapsayıcı uygulamanızın dağıtıldığı kaynak grubu. |
environment |
$ENVIRONMENT |
Kapsayıcı uygulamanızın çalıştığı ortam. |
image |
$REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" |
Kayıt defteri adı ve etiketi dahil olmak üzere dağıtılacak kapsayıcı görüntüsü. |
target-port |
8080 |
Uygulamanızın istekler için dinlediği bağlantı noktasıyla eşleşir. |
ingress |
external |
Kapsayıcı uygulamanızı genel İnternet'ten erişilebilir hale getirir. |
user-assigned |
$IDENTITY_ID |
Kapsayıcı uygulamanız için kullanıcı tarafından atanan yönetilen kimlik. |
registry-identity |
registry-identity |
Kapsayıcı kayıt defterine erişmek için kullanılan kimlik. |
registry-server |
$REGISTRY_NAME.azurecr.io |
Kapsayıcı kayıt defterinizin sunucu adresi. |
query |
properties.configuration.ingress.fqdn |
Çıkışı yalnızca uygulamanın tam etki alanı adına (FQDN) göre filtreler. |
Bu komut tamamlandıktan sonra yeni web uygulamanızın URL'sini döndürür.
Dağıtımı doğrulama
Uygulamanın URL'sini bir web tarayıcısına kopyalayın. Kapsayıcı uygulaması başlatıldıktan sonra Merhaba Dünya! döndürür.
Uygulamaya ilk kez erişildiğinden, uygulamanın yanıt döndürmesi birkaç dakika sürebilir.
Kaynakları temizleme
Bu öğreticide oluşturulan Azure kaynaklarını kullanmayacaksanız, bunları tek bir komutla kaldırabilirsiniz. Komutu çalıştırmadan önce, bu öğretici serisinde kodunuzda değişiklik yapmayı ve Azure'da uygulamanızı güncelleştirmeyi gösteren bir sonraki adım vardır.
İşiniz bittiyse ve bu öğreticide oluşturulan tüm Azure kaynaklarını kaldırmak istiyorsanız aşağıdaki komutu kullanarak kaynak grubunu silin.
az group delete --name aca-demo
İpucu
Sorun mu yaşıyorsunuz? Azure Container Apps deposunda bir sorun açarak GitHub'da bize bildirin.
Sonraki adımlar
Ardından, oluşturduğunuz kapsayıcı uygulamasını nasıl güncelleştireceğinizi öğrenmek için devam edin.