Bagikan melalui


Tutorial: Membangun dan menyebarkan dari kode sumber ke Azure Container Apps

Artikel ini memperlihatkan kepada Anda cara membuat dan menyebarkan aplikasi ke Azure Container Apps dari kode sumber di komputer Anda dalam bahasa pemrograman pilihan Anda.

Di tutorial ini, Anda akan:

  • Buat aplikasi web sederhana.
  • Buat Dockerfile terkait untuk aplikasi Anda.
  • Buat gambar dari kode yang dikompilasi dan dorong ke registri kontainer.
  • Gunakan identitas terkelola untuk mengakses registri kontainer Anda dengan aman.
  • Sebarkan kontainer Anda ke Azure Container Apps.
  • Lihat aplikasi Anda di browser untuk memverifikasi penyebaran.

Prasyarat

Untuk menyelesaikan proyek ini, Anda memerlukan item berikut:

Persyaratan Petunjuk
Akun Azure Jika Anda tidak memilikinya, buat akun secara gratis. Anda memerlukan izin Kontributor atau Pemilik pada langganan Azure untuk melanjutkan.

Lihat Menetapkan peran Azure menggunakan portal Azure untuk detailnya.
Azure CLI Instal Azure CLI atau tingkatkan ke versi terbaru. Azure Developer CLI (azd perintah) tersedia melalui Azure CLI.

Bergantung pada pilihan bahasa Anda, Anda mungkin juga perlu menginstal runtime, SDK, dan dependensi lainnya yang sesuai.

Membuat aplikasi lokal

Langkah-langkah berikut menunjukkan kode dan dependensi yang diperlukan untuk membangun aplikasi sampel untuk disebarkan di Azure Container Apps.

Catatan

Jika Anda ingin menggunakan bahasa lain selain bahasa yang tercantum, masukkan perintah berikut ke dalam model AI pilihan Anda.

Sebelum Anda mengirimkan permintaan, ganti <LANGUAGE> dengan bahasa pilihan Anda.

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. 
  1. Buat dan jalankan kode sumber Anda.

    Buat proyek C# baru.

    dotnet new webapp --name MyAcaDemo --language C#
    

    Ubah ke folder MyAcaDemo .

    cd MyAcaDemo
    

    Buka Program.cs di editor kode dan ganti konten dengan kode berikut.

    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");
                });
    }
    

    Menerapkan Program kelas dengan kode ini membuat dasar aplikasi web. Selanjutnya, buat kelas yang bertanggung jawab untuk mengembalikan halaman web sebagai respons.

    Di folder yang sama, buat file baru bernama Startup.cs dan masukkan kode berikut.

    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!");
                });
            });
        }
    }
    

    Sekarang ketika permintaan dibuat ke aplikasi web Anda, teks "Halo Dunia!" dikembalikan. Untuk memverifikasi bahwa kode Anda berjalan dengan benar di komputer lokal Anda, buat proyek Anda dalam konfigurasi rilis.

    dotnet build -c Release
    

    Selanjutnya, jalankan aplikasi Anda untuk memverifikasi bahwa kode Anda diimplementasikan dengan benar.

    dotnet run --configuration Release
    

    Setelah memverifikasi bahwa aplikasi berfungsi seperti yang diharapkan, Anda dapat menghentikan server lokal dan melanjutkan untuk membuat Dockerfile sehingga Anda dapat menyebarkan aplikasi ke Aplikasi Kontainer.

  2. Di folder MyAcaDemo, buat file bernama Dockerfile dan tambahkan konten berikut.

    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"]
    

    Setelah kode dan Dockerfile siap, Anda dapat menyebarkan aplikasi ke Azure Container Apps.

Membuat sumber daya Azure

  1. Masuk ke Azure dari CLI dengan perintah berikut. Untuk menyelesaikan proses autentikasi, pastikan untuk mengikuti semua perintah.

    az login
    
  2. Instal atau perbarui ekstensi Azure Container Apps untuk Azure CLI.

    az extension add --name containerapp --upgrade
    

    Catatan

    Jika Anda menerima kesalahan tentang parameter yang hilang saat menjalankan az containerapp perintah, pastikan Anda memiliki versi terbaru ekstensi Azure Container Apps yang terinstal.

  3. Setelah penyiapan Azure CLI selesai, Anda dapat menentukan sekumpulan variabel lingkungan.

    Sebelum Anda menjalankan perintah berikut, tinjau nilai yang disediakan.

    Lokasi dikonfigurasi sebagai US Tengah, tetapi Anda dapat mengubah ke lokasi terdekat anda jika mau.

    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"
    

    Perintah mydemoregistry$(openssl rand -hex 4) menghasilkan string acak untuk digunakan sebagai nama registri kontainer Anda. Nama registri harus unik secara global, sehingga string ini membantu memastikan perintah Anda berjalan dengan sukses.

  4. Buat grup sumber daya untuk mengatur layanan yang terkait dengan penyebaran aplikasi kontainer Anda.

    az group create \
      --name $RESOURCE_GROUP \
      --location $LOCATION \
      --output none
    
  5. Buat identitas terkelola yang ditetapkan pengguna dan dapatkan ID-nya dengan perintah berikut.

    Pertama, buat identitas terkelola.

    az identity create \
        --name $IDENTITY_NAME \
        --resource-group $RESOURCE_GROUP \
        --output none
    

    Sekarang atur pengidentifikasi identitas ke dalam variabel untuk digunakan nanti.

    IDENTITY_ID=$(az identity show \
      --name $IDENTITY_NAME \
      --resource-group $RESOURCE_GROUP \
      --query id \
      --output tsv)
    
  6. Buat lingkungan Aplikasi Kontainer untuk menghosting aplikasi Anda menggunakan perintah berikut.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION \
        --mi-user-assigned $IDENTITY_ID \
        --output none
    
  7. Buat instans Azure Container Registry (ACR) di grup sumber daya Anda. Registri menyimpan gambar kontainer Anda.

    az acr create \
      --resource-group $RESOURCE_GROUP \
      --name $REGISTRY_NAME \
      --sku Basic \
      --output none
    
  8. Tetapkan identitas terkelola yang ditetapkan pengguna ke instans registri kontainer Anda dengan perintah berikut.

    az acr identity assign \
      --identities $IDENTITY_ID \
      --name $REGISTRY_NAME \
      --resource-group $RESOURCE_GROUP \
      --output none
    

Membangun dan mendorong gambar ke registri

Buat dan dorong gambar kontainer Anda ke instans registri kontainer Anda dengan perintah berikut.

az acr build \
    -t $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
    -r $REGISTRY_NAME .

Perintah ini menerapkan tag helloworld ke gambar kontainer Anda.

Membuat aplikasi kontainer Anda

Buat aplikasi kontainer Anda dengan perintah berikut.

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

Perintah ini menambahkan peran ke acrPull identitas terkelola yang ditetapkan pengguna Anda, sehingga dapat menarik gambar dari registri kontainer Anda.

Tabel berikut menjelaskan parameter yang digunakan oleh perintah ini.

Parameter Nilai Deskripsi
name $CONTAINER_APP_NAME Nama aplikasi kontainer Anda.
resource-group $RESOURCE_GROUP Grup sumber daya tempat aplikasi kontainer Anda disebarkan.
environment $ENVIRONMENT Lingkungan tempat aplikasi kontainer Anda berjalan.
image $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" Gambar kontainer yang akan disebarkan, termasuk nama dan tag registri.
target-port 8080 Cocok dengan port yang didengarkan aplikasi Anda untuk permintaan.
ingress external Membuat aplikasi kontainer Anda dapat diakses dari internet publik.
user-assigned $IDENTITY_ID Identitas terkelola yang ditetapkan pengguna untuk aplikasi kontainer Anda.
registry-identity registry-identity Identitas yang digunakan untuk mengakses registri kontainer.
registry-server $REGISTRY_NAME.azurecr.io Alamat server registri kontainer Anda.
query properties.configuration.ingress.fqdn Memfilter output hanya ke nama domain aplikasi yang sepenuhnya memenuhi syarat (FQDN).

Setelah perintah ini selesai, perintah mengembalikan URL untuk aplikasi web baru Anda.

Verifikasi penyebaran

Salin URL aplikasi ke browser web. Setelah aplikasi kontainer dimulai, aplikasi tersebut mengembalikan Halo Dunia!.

Karena ini adalah pertama kalinya aplikasi diakses, mungkin perlu beberapa saat bagi aplikasi untuk mengembalikan respons.

Membersihkan sumber daya

Jika Anda tidak akan menggunakan sumber daya Azure yang dibuat dalam tutorial ini, Anda dapat menghapusnya dengan satu perintah. Sebelum Anda menjalankan perintah, ada langkah berikutnya dalam seri tutorial ini yang menunjukkan kepada Anda cara membuat perubahan pada kode Anda dan memperbarui aplikasi Anda di Azure.

Jika Anda sudah selesai dan ingin menghapus semua sumber daya Azure yang dibuat dalam tutorial ini, hapus grup sumber daya dengan perintah berikut.

az group delete --name aca-demo

Tip

Mengalami masalah? Beri tahu kami di GitHub dengan membuka masalah di repositori Azure Container Apps.

Langkah berikutnya

Selanjutnya, lanjutkan untuk mempelajari cara memperbarui aplikasi kontainer yang Anda buat.