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.
komutu, azd publish kapsayıcı görüntülerini hemen bir Azure kaynağına dağıtmadan Azure Container Registry veya Docker Hub gibi bir kapsayıcı kayıt defterine oluşturmanıza ve göndermenize olanak tanır.
Derleme ve gönderme adımlarını dağıtım adımından ayırarak, "bir kez derle, her yere dağıt" deseni gibi daha gelişmiş dağıtım iş akışları uygulayabilirsiniz. Bu yaklaşım, Azure Container Apps'i veya AzureKubernetes Service'i (AKS) hedefleyen kapsayıcılı uygulamalar için kullanışlıdır.
Neden azd publish kullanmalı?
Standart azd bir iş akışında azd deploy , komut sırayla üç eylem gerçekleştirir:
- Oluştur: Uygulama kodunuzu bir kapsayıcı görüntüsüne oluşturur.
- Gönderme: Bu görüntüyü bir kayıt defterine gönderir.
- Dağıtma: Yeni görüntüyü çalıştırmak için Azure barındırma hizmetinizi (Container Apps gibi) güncelleştirir.
İç döngü geliştirme için uygun olsa da, bu yaklaşım her dağıtımın yeni bir derleme gerektirdiğini varsayar. Üretim senaryolarında genellikle şunları yapmak istersiniz:
- Bir kez derleyin, her yere dağıtın: Tek bir yapıt (görüntü) oluşturun, geliştirme ortamında test edin ve ardından aynı yapıtı yeniden derlemeden üretime yükseltin.
- Yapıtları merkezileştirme: Tüm ortamlarınızın görüntülerini depolamak için tek bir paylaşılan Azure Container Registry (ACR) kullanın.
- Güvenliği geliştirme: Üretime yalnızca doğrulanmış ve test edilmiş görüntülerin dağıtıldığından emin olun.
azd publish yalnızca 1. ve 2. adımları (Derleme ve Gönderme) işleyerek bu senaryoları etkinleştirir. Ardından, azd deploy belirli bayraklarla kullanarak önceden yayımlanmış görüntü ile 3. adımı (Dağıt) işleyebilirsiniz.
Temel özellikler
- Bağımsız Yayımlama: Dağıtımı tetiklemeden görüntüleri bir kayıt deposuna yayımlayın.
-
Özel Hedefler: Görüntünün tam olarak nereye gönderilmesi gerektiğini belirtmek için
--tobayrağını kullanın, varsayılan adlandırma kurallarını geçersiz kılarak[registry/]repository[:tag]. - Üçüncü Taraf Kayıt Defteri Desteği: Azure Container Registry'ye ek olarak dış kayıt defterlerine (Docker Hub gibi) gönderme.
-
Kanca Desteği:
prepublishvepostpublishkancalarını özel otomasyon için destekler. - Hizmet Hedefleme: Şu anda Azure Container Apps ve AKS'de barındırılan hizmetleri desteklemektedir.
Usage
içinde azure.yamltanımlanan belirli bir hizmete ait görüntüyü derlemek ve yayımlamak için:
azd publish <service-name>
Tüm hizmetleri derlemek ve yayımlamak için:
azd publish --all
Parametreler
| Flag | Description |
|---|---|
--all |
içinde azure.yamltanımlanan tüm hizmetleri yayımlar. |
--from-package <image> |
Kaynaktan oluşturmak yerine mevcut bir yerel görüntüyü veya paketi kullanır. |
--to <image-ref> |
Hedef görüntü başvurusunu belirtir (örneğin, <your-registry>.azurecr.io/my-app:v1).
azure.yaml içinde varsayılan adlandırmayı geçersiz kılar. |
Uyarı
services.<name>.docker.imagePassthrough: true ile yapılandırılan hizmetler için azd publish, bir görüntü oluşturmaz veya göndermez. Bunun yerine yapılandırılmış uzak imajı yeniden kullanır ve bu hizmet için --to ve --from-package bayraklarını reddeder.
Örnekler
Belirli bir hizmeti özel bir etikete yayımlama:
azd publish api-service --to <your-registry>.azurecr.io/api-service:v1.0.0
Yerel görüntüyü uzak kayıt defterine yayımlama:
Yerel olarak zaten bir görüntü derlediyseniz (örneğin: local-api:dev), kullanarak azdetiketleyebilir ve gönderebilirsiniz:
azd publish api-service --from-package local-api:dev --to <your-registry>.azurecr.io/api-service:v1.0.0
Senaryo: Bir kez oluşturun, her yere dağıtın
Yaygın bir üretim iş akışı, bir görüntüyü bir kez oluşturmayı ve Geliştirme -> Test -> Üretim gibi birden çok ortamda yükseltmeyi içerir. Bunu azd publish ve azd deploy kombinasyonunu kullanarak elde edin.
Bu senaryo, ile services.<name>.docker.imagePassthrough: trueyapılandırılan hizmetler için geçerli değildir çünkü azd publish bu hizmetler için bir görüntü oluşturmaz veya göndermez.
Görüntüyü yayımlama:
Kodu derleyin ve paylaşılan kayıt defterinize gönderin.
azd publish api-service --to <your-registry>.azurecr.io/my-app:v1.0.0Geliştirme ortamına dağıt:
Belirli görüntü sürümünü geliştirme ortamına dağıtın.
--from-packagebayrağı,azd deploy'e derleme/gönderme adımlarını atlayıp sadece hizmet yapılandırmasını güncelleştirmesini söyler.azd env select dev azd deploy api-service --from-package <your-registry>.azurecr.io/my-app:v1.0.0Üretime Yükselt:
Geliştirme'de test ettikten sonra aynı görüntüyü üretim ortamına dağıtın.
azd env select prod azd deploy api-service --from-package <your-registry>.azurecr.io/my-app:v1.0.0
Diğer komutlarla karşılaştırma
| Command | Gerçekleştirilen Eylemler | En Uygun |
|---|---|---|
azd publish |
Derleme -> Gönderme | CI/CD boru hatları, artefakt oluşturma, "Bir kez oluştur" iş akışları. |
azd publish --from-package |
Yalnızca gönder | önceden oluşturulmuş artifaktleri ortamlara aktarır. |
azd deploy |
Derleme -> Anında İletme -> Dağıtma | Standart geliştirme yinelemesi (iç döngü). |
azd deploy --from-package |
Sadece dağıt | ortamlara önceden oluşturulmuş/önceden yayımlanmış yapıtları dağıtma. |
azd up |
Sağlama -> Derleme -> Gönderme -> Dağıtma | Başlarken, sıfırdan yeni ortamlar başlatmak. |
Uyarı
varsayılan davranışı azd up değişmeden kalır. Uçtan uca sürecin tamamını düzenlemeye devam eder. Ancak, gerekirse iş akışlarınızı azure.yaml kullanmak için azd publish'de özelleştirebilirsiniz.
services.<name>.docker.imagePassthrough: true ile yapılandırılan hizmetler için azd publish ve azd publish --from-package geçerli değildir.
azd yapılandırılmış uzak imajı oluşturup göndermek yerine yeniden kullanır.
Yapılandırma: azure.yaml
içindeki azure.yamlhizmetleriniz için varsayılan Docker ayarlarını yapılandırın.
azd publish komutu gibi --tobayraklar tarafından geçersiz kılınmadığı sürece bu ayarlara saygı gösterir.
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
Bu yapılandırmayla, azd publish api işlemi, docker.io/myusername/my-api:latest konumuna gönderilir.
Bir uzak görüntüyü imagePassthrough yeniden kullanın
Hizmetinizin, azd oluşturmaması, göndermemesi veya başka bir şekilde yönetmemesi gereken yayımlanmış bir imajı zaten varsa, services.<name>.docker.imagePassthrough: true değerini ayarlayın. Bu seçeneği etkinleştirdiğinizde:
-
services.<name>.imageöğesini, açıkça belirtilmiş bir kayıt da dahil olmak üzere, nihai ve tam nitelikli uzak imaj referansı olarak ayarlayın. -
docker.remoteBuildiledocker.imagePassthroughbirleştiremezsiniz. -
azd publish, hizmet için bir imaj oluşturmaz veya push etmez ve bu hizmet için--tove--from-packageişaretlerini reddeder.
name: my-app
services:
api:
host: containerapp
docker:
imagePassthrough: true
image: docker.io/myusername/my-api:v1.0.0