Penyebaran kontainer App Service dengan Azure Developer CLI

Azure Developer CLI (azd) dapat menyebarkan aplikasi Anda ke Azure App Service. Mode penyebaran ini menjalankan aplikasi Anda sebagai Aplikasi Web Linux untuk Kontainer. Saat layanan menggunakan host: appservice dengan build berbasis Docker, azd deploy membangun image, mengirimkannya ke Azure Container Registry (ACR), dan mengonfigurasi situs App Service yang ada agar menggunakan image baru tersebut.

Karena azd deploy hanya memperbarui referensi gambar, infrastruktur Anda harus menyiapkan situs agar siap dijalankan dalam container sebelum Anda melakukan deployment. Mengetahui apa yang diharapkan mode penyebaran ini membantu Anda menyiapkan situs dengan benar dan menghindari penyebaran yang gagal.

Artikel ini menjelaskan bagaimana mode deployment tersebut bekerja, konfigurasi apa saja yang harus sudah ada pada infrastruktur Anda, dan bagaimana perbedaannya dengan host containerapp. Ini mengasumsikan bahwa Anda sudah familier dengan proyek azd, azure.yaml, serta perintah penyediaan dan penerapan azd.

Cara azd menerapkan kontainer ke App Service

Saat layanan diatur host: appservice dengan konfigurasi kontainer, azd deploy memperlakukan situs target sebagai Aplikasi Web untuk Kontainer dan melakukan pekerjaan berikut:

  • Membangun gambar kontainer dari Dockerfile Anda.
  • Mengirim image ke instans ACR yang ditentukan oleh infrastruktur Anda.
  • Memperbarui pengaturan situs linuxFxVersion ke DOCKER|<image> sehingga situs menjalankan gambar Anda.

azd deploy hanya memperbarui referensi gambar untuk situs yang sudah ada. Layanan ini tidak membuat atau mengonfigurasi infrastruktur dasar, sehingga situs tersebut harus sudah siap dikontainerisasi terlebih dahulu sebelum Anda menerapkannya.

Konfigurasi layanan di azure.yaml

Penyebaran kontainer ke App Service digunakan host: appservice dengan build berbasis Docker. Atur language: docker, atau tambahkan konfigurasi docker yang mengarah ke Dockerfile Anda:

services:
  web:
    project: ./src/web
    host: appservice
    language: docker
    docker:
      path: ./Dockerfile

Dengan konfigurasi ini, azd membangun image dari ./src/web/Dockerfile, mengunggahnya ke registri Anda, dan memperbarui situs App Service agar menjalankan image tersebut. Host appservice tidak menerapkan pengaturan tingkat env: layanan, jadi konfigurasikan pengaturan aplikasi melalui infrastruktur Anda sebagai gantinya.

Persyaratan infrastruktur untuk situs App Service yang mendukung kontainer

azd deploy tidak memprovisikan atau memodifikasi infrastruktur untuk host appservice, jadi Bicep atau Terraform yang sudah ada harus mengonfigurasi situs sebagai aplikasi kontainer Linux sebelum Anda melakukan penerapan. Infrastruktur harus memenuhi kontrak berikut:

Persyaratan Rincian
Paket Linux App Service Paket ini menjalankan Linux (kind: linux dengan reserved: true). App Service hanya mendukung kontainer di Linux, bukan Windows.
Situs yang siap untuk kontainer linuxFxVersion situs ini menggunakan nilai DOCKER\|. Gambar placeholder tidak masalah, karena azd deploy akan menggantinya dengan image yang dibuat dan di-push.
Kontainer tunggal Situs ini menjalankan satu kontainer. Host appservice tidak mendukung konfigurasi multi-kontainer atau Docker Compose.
Akses ACR dengan identitas terkelola Situs mengautentikasi ke ACR melalui identitas terkelola yang ditetapkan pengguna, seperti acrUseManagedIdentityCreds: true dengan acrUserManagedIdentityID. Host appservice tidak mendukung kredensial admin.

azd deploy dibandingkan dengan provision dan up

Penyebaran kontainer ke App Service mencakup dua aspek, infrastruktur dan kode aplikasi, yang sesuai dengan perintah azd yang berbeda:

Command Apa fungsinya Kapan harus menggunakannya
azd provision Membuat dan mengonfigurasi sumber daya Azure berdasarkan Bicep atau Terraform Anda, termasuk situs App Service yang siap untuk kontainer dan ACR. Gunakan saat infrastruktur Anda berubah atau situs belum ada.
azd deploy Membangun citra, mengirimnya ke ACR, dan memperbarui referensi citra situs. Ini tidak menyentuh infrastruktur. Gunakan untuk mengirim perubahan aplikasi ke situs yang sudah disediakan.
azd up Menjalankan azd provision lalu azd deploy dalam satu perintah. Gunakan untuk penyebaran pertama kali, atau saat Anda ingin menyediakan dan menyebarkan bersama-sama.

Karena azd deploy hanya memperbarui referensi image, deployment kontainer appservice selalu bergantung pada infrastruktur yang sebelumnya dibuat oleh azd provision atau azd up.

Validasi kesiapan penyebaran

Sebelum memperbarui situs, azd deploy validasi bahwa situs target siap untuk kontainer. Jika situs tersebut bukan aplikasi kontainer Linux, misalnya menggunakan paket Windows, tidak memiliki nilai DOCKER|linuxFxVersion, atau tidak memiliki akses identitas terkelola ke ACR, maka azd deploy berhenti dan mengembalikan error yang mengidentifikasi konfigurasi yang belum ada. Perbaiki infrastruktur dan lakukan provisi ulang sebelum Anda melakukan deployment lagi.

Kontainer App Service dibandingkan dengan Aplikasi Kontainer

Baik host containerapp maupun host appservice menerapkan image kontainer, tetapi keduanya mengelola infrastruktur dan konfigurasi dengan cara yang berbeda:

Behavior appservice host containerapp host
Konfigurasi infrastruktur azd deploy hanya memperbarui referensi image dan mengasumsikan situs tersebut sudah siap menjalankan container. Menyediakan dan mengonfigurasi lebih banyak bagian dari runtime kontainer untuk Anda.
Variabel lingkungan Tidak menerapkan pengaturan tingkat env: layanan. Konfigurasikan pengaturan aplikasi melalui infrastruktur Anda sebagai gantinya. Menerapkan pengaturan tingkat env: layanan ke kontainer.
Dukungan Polyglot Kontainerisasi aplikasi dalam bahasa apa pun melalui language: docker, yang berguna untuk runtime tanpa dukungan bawaan azd . Mengontainerkan aplikasi dalam bahasa apa pun melalui language: docker, yang berguna untuk lingkungan runtime tanpa dukungan bawaan azd.