Dela via


Azure Developer CLI-publiceringsarbetsflöden

Med azd publish kommandot kan du skapa och skicka containeravbildningar till ett containerregister som Azure Container Registry eller Docker Hub utan att omedelbart distribuera dem till en Azure-resurs.

Genom att separera bygg- och push-stegen från distributionssteget kan du implementera mer avancerade distributionsarbetsflöden, till exempel mönstret "skapa en gång, distribuera överallt". Den här metoden är användbar för containerbaserade program som riktar sig till Azure Container Apps eller Azure Kubernetes Service (AKS).

Varför använda azd publish?

I ett standardarbetsflöde azdazd deploy utför kommandot tre åtgärder i följd:

  1. Build: Skapar programkoden i en containeravbildning.
  2. Push: Push-överför avbildningen till ett register.
  3. Distribuera: Uppdaterar din Azure-värdtjänst (såsom Container Apps) för att köra den nya avbilden.

Även om det är praktiskt för utveckling av inre loopar förutsätter den här metoden att varje distribution kräver en ny version. I produktionsscenarier vill du ofta:

  • Skapa en gång, distribuera överallt: Skapa en enskild artefakt (avbildning), testa den i en utvecklingsmiljö och flytta sedan upp exakt samma artefakt till produktion utan att återskapa den.
  • Centralisera artefakter: Använd ett enda delat Azure Container Registry (ACR) för att lagra avbildningar för alla dina miljöer.
  • Förbättra säkerheten: Se till att endast verifierade och testade avbildningar distribueras till produktion.

azd publish aktiverar dessa scenarier genom att endast hantera steg 1 och 2 (build och push). Du kan sedan använda azd deploy med specifika flaggor för att hantera steg 3 (Distribuera) med den förpublicerade avbildningen.

Viktiga funktioner

  • Oberoende publicering: Publicera avbildningar i ett register utan att utlösa en distribution.
  • Anpassade mål: Använd --to flaggan för att ange exakt var avbildningen ska push-överföras ([registry/]repository[:tag]), vilket åsidosättar standardnamngivningskonventionerna.
  • Registerstöd från tredje part: Skicka till externa register (som Docker Hub) utöver Azure Container Registry.
  • Hook-stöd: Stödjer prepublish och postpublish hooks för anpassad automatisering.
  • Tjänstmål: Stöder för närvarande tjänster som finns i Azure Container Apps och AKS.

Usage

Skapa och publicera imagen för en specifik tjänst som definierats i azure.yaml.

azd publish <service-name>

Så här skapar och publicerar du alla tjänster:

azd publish --all

Parameterar

Flag Description
--all Publicerar alla tjänster som definierats i azure.yaml.
--from-package <image> Använder en befintlig lokal avbildning eller ett befintligt paket i stället för att skapa från källan.
--to <image-ref> Anger målbildreferensen (till exempel <your-registry>.azurecr.io/my-app:v1). Åsidosätter standardnamngivning i azure.yaml.

Examples

Publicera en specifik tjänst till en anpassad tagg:

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

Publicera en lokal avbildning till ett fjärrregister:

Om du redan har skapat en avbildning lokalt (till exempel: local-api:dev) kan du tagga och push-överföra den med hjälp av azd:

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

Scenario: Skapa en gång, distribuera överallt

Ett vanligt produktionsarbetsflöde innebär att skapa en avbildning en gång och marknadsföra den via flera miljöer, till exempel Dev –> Test –> Prod. Uppnå detta med hjälp av en kombination av azd publish och azd deploy.

  1. Publicera bilden:

    Skapa koden och skicka den till det delade registret.

    azd publish api-service --to <your-registry>.azurecr.io/my-app:v1.0.0
    
  2. Distribuera till utveckling:

    Distribuera den specifika avbildningsversionen till utvecklingsmiljön. Flaggan --from-package uppmanar azd deploy dig att hoppa över bygg-/push-stegen och bara uppdatera tjänstkonfigurationen.

    azd env select dev
    azd deploy api-service --from-package <your-registry>.azurecr.io/my-app:v1.0.0
    
  3. Flytta upp till produktion:

    När du har testat i Dev distribuerar du samma avbildningsreferens till produktionsmiljön.

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

Jämförelse med andra kommandon

Befallning Åtgärder som utförts Bäst för
azd publish Build –> Push CI/CD-pipelines, skapa artefakter, "Skapa en gång"-arbetsflöden.
azd publish --from-package Endast push-överföring push-överför fördefinierade artefakter till miljöer.
azd deploy Build –> Push –> Distribuera Standardiserad utvecklingsiteration (inre slinga).
azd deploy --from-package Distribuera endast distribuera förbyggda/förpublicerade artefakter till miljöer.
azd up Etablera –> Skapa –> Pusha –> Distribuera Komma igång och initiera nya miljöer från grunden.

Anmärkning

Standardbeteendet azd up för förblir oförändrat. Den orkestrerar fortfarande hela processen från slutpunkt till slutpunkt. Du kan dock anpassa dina arbetsflöden i azure.yaml för att använda azd publish om det behövs.

Konfiguration i azure.yaml

Konfigurera docker-standardinställningarna för dina tjänster i azure.yaml. Kommandot azd publish respekterar dessa inställningar om de inte åsidosätts av flaggor som --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

Med den här konfigurationen skulle att köra azd publish api skicka till docker.io/myusername/my-api:latest.

Nästa steg