Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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:
- Build: Membangun kode aplikasi Anda ke dalam gambar kontainer.
- Pendorongan: Mendorong gambar tersebut ke registri.
- 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
--toparameter 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
prepublishdanpostpublishhook 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.
Terbitkan gambar:
Bangun kode dan unggah ke registri bersama Anda.
azd publish api-service --to <your-registry>.azurecr.io/my-app:v1.0.0Terapkan di Pengembangan
Sebarkan versi gambar tertentu ke lingkungan pengembangan.
--from-packageFlag memberi tahuazd deployuntuk 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.0Promosikan 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.