Alur kerja penerbitan Azure Developer CLI

Perintah azd publish memungkinkan Anda membuat dan mengunggah citra kontainer ke registri kontainer seperti Azure Container Registry atau Docker Hub tanpa segera menyebarkan ke sumber daya Azure.

Dengan memisahkan langkah-langkah build dan push dari langkah penyebaran, Anda dapat menerapkan alur kerja penyebaran yang lebih canggih, seperti pola "build once, deploy everywhere". Pendekatan ini berguna untuk aplikasi kontainer yang menargetkan Azure Container Apps atau Azure Kubernetes Service (AKS).

Mengapa menggunakan azd publish?

Dalam alur kerja standar azd , azd deploy perintah melakukan tiga tindakan secara berurutan:

  1. Build: Membangun kode aplikasi Anda ke dalam gambar kontainer.
  2. Pendorongan: Mendorong gambar tersebut ke registri.
  3. Sebarkan: Memperbarui layanan hosting Azure Anda (seperti Aplikasi Kontainer) untuk menjalankan gambar baru.

Meskipun nyaman untuk pengembangan dalam-loop, pendekatan ini mengasumsikan bahwa setiap deploy membutuhkan build baru. Dalam skenario produksi, Anda sering ingin:

  • Bangun sekali, sebarkan di mana saja: Bangun artefak tunggal (gambar), uji di lingkungan pengembangan, lalu promosikan artefak yang sama persis dengan produksi tanpa membangunnya kembali.
  • Memusatkan artefak: Gunakan satu Azure Container Registry (ACR) bersama untuk menyimpan gambar untuk semua lingkungan Anda.
  • Meningkatkan keamanan: Pastikan hanya gambar terverifikasi dan teruji yang disebarkan ke produksi.

azd publish mengaktifkan skenario ini dengan hanya menangani langkah 1 dan 2 (Bangun dan Dorong). Anda kemudian dapat menggunakan azd deploy dengan bendera tertentu untuk menangani langkah 3 (Sebarkan) menggunakan gambar yang telah diterbitkan sebelumnya.

Fitur utama

  • Penerbitan Independen: Menerbitkan gambar ke registri tanpa memicu penyebaran.
  • Target Kustom: Gunakan --to parameter untuk menentukan dengan tepat di mana gambar harus dikirim ([registry/]repository[:tag]), menggantikan konvensi penamaan standar.
  • Dukungan Registri Pihak Ketiga: Dorong ke registri eksternal (seperti Docker Hub) selain Azure Container Registry.
  • Dukungan Hook: Mendukung prepublish dan postpublish hook untuk otomatisasi kustom.
  • Penargetan Layanan: Saat ini mendukung layanan yang dihosting di Azure Container Apps dan AKS.

Usage

Untuk membuat dan menerbitkan gambar untuk layanan tertentu yang ditentukan dalam azure.yaml Anda.

azd publish <service-name>

Untuk membangun dan menerbitkan semua layanan:

azd publish --all

Parameter-parameternya

Flag Description
--all Menerbitkan semua layanan yang ditentukan dalam azure.yaml.
--from-package <image> Menggunakan gambar atau paket lokal yang ada alih-alih membangun dari sumber.
--to <image-ref> Menentukan referensi gambar target (misalnya, <your-registry>.azurecr.io/my-app:v1). Mengambil alih penamaan default di azure.yaml.

Examples

Terbitkan layanan tertentu ke tag kustom:

azd publish api-service --to <your-registry>.azurecr.io/api-service:v1.0.0

Terbitkan gambar lokal ke registri jarak jauh:

Jika Anda sudah membuat image secara lokal (misalnya: local-api:dev), Anda dapat menandai dan push menggunakan azd:

azd publish api-service --from-package local-api:dev --to <your-registry>.azurecr.io/api-service:v1.0.0

Skenario: Kembangkan sekali, gunakan di mana-mana

Alur kerja produksi umum melibatkan pembuatan gambar sekali dan mempromosikannya melalui beberapa lingkungan seperti Dev - Test ->> Prod. Capai ini menggunakan kombinasi azd publish dan azd deploy.

  1. Terbitkan gambar:

    Bangun kode dan unggah ke registri bersama Anda.

    azd publish api-service --to <your-registry>.azurecr.io/my-app:v1.0.0
    
  2. Terapkan di Pengembangan

    Sebarkan versi gambar tertentu ke lingkungan pengembangan. --from-package Flag memberi tahu azd deploy untuk melewati langkah-langkah build/push dan hanya memperbarui konfigurasi layanan.

    azd env select dev
    azd deploy api-service --from-package <your-registry>.azurecr.io/my-app:v1.0.0
    
  3. Promosikan ke Produksi:

    Setelah pengujian di Dev, sebarkan referensi gambar yang sama ke lingkungan produksi.

    azd env select prod
    azd deploy api-service --from-package <your-registry>.azurecr.io/my-app:v1.0.0
    

Perbandingan dengan perintah lain

Command Tindakan yang Dilakukan Terbaik untuk
azd publish Build -> Push Alur CI/CD, membuat artifak, alur kerja "Bangun sekali saja".
azd publish --from-package Tekan saja mengunggah artefak yang telah dibangun sebelumnya ke lingkungan.
azd deploy Build -> Dorong -> Sebarkan Iterasi pengembangan standar (siklus dalam).
azd deploy --from-package Sebarkan saja menyebarkan artefak bawaan/yang telah diterbitkan sebelumnya ke lingkungan.
azd up Provisi -> Build -> Dorong -> Sebarkan Memulai, menginisialisasi lingkungan baru dari awal.

Nota

Perilaku bawaan azd up tetap tidak berubah. Ini masih mengorkestrasikan proses ujung-ke-ujung penuh. Namun, Anda dapat menyesuaikan alur azure.yaml kerja untuk digunakan azd publish jika diperlukan.

Konfigurasi di azure.yaml

Konfigurasikan pengaturan Docker default untuk layanan Anda di azure.yaml. Perintah azd publish mengikuti pengaturan ini kecuali digantikan oleh flags seperti --to.

name: my-app
services:
  api:
    project: ./src/api
    host: containerapp
    docker:
      registry: 'docker.io/myusername' # Default registry
      image: 'my-api'                  # Default image name
      tag: 'latest'                    # Default tag

Dengan konfigurasi ini, menjalankan azd publish api akan mengirimkan ke docker.io/myusername/my-api:latest.

Langkah selanjutnya