Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Usando Azure Pipelines, è possibile compilare, testare e distribuire automaticamente l'app Web in un contenitore di app Web del servizio app Azure in Linux. In questo articolo si apprenderà come usare le pipeline YAML o classiche per:
- Compilare e pubblicare un'immagine Docker in Registro Azure Container.
- Creare un'app Web di Azure.
- Distribuire un contenitore nel servizio app di Azure.
- Distribuire negli slot di distribuzione.
Prerequisiti
Prodotto | Requisiti |
---|---|
Azure DevOps | - Un'organizzazione e un progetto di Azure DevOps.
Creane uno gratis. Autorizzazioni - : - Per concedere l'accesso a tutte le pipeline nel progetto: devi essere membro del gruppo Project Administrators. - Per creare connessioni al servizio: è necessario avere il ruolo Amministratore o Creator per le connessioni al servizio. - La possibilità di eseguire pipeline su agenti ospitati da Microsoft. È possibile acquistare un incarico parallelo oppure richiedere un piano gratuito. |
GitHub | - Un account GitHub. |
Azzurro | - Registro Azure Container. Creare un registro Azure Container se non ne è già disponibile uno. |
Ottenere il codice
Effettua il fork della seguente app di esempio su GitHub.
https://github.com/spring-guides/gs-spring-boot-docker.git
Compilare e pubblicare un'immagine Docker in Registro Azure Container
Per completare correttamente questa sezione, è necessario disporre di un Registro Azure Container. Per informazioni dettagliate, vedere la sezione dei prerequisiti.
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Pipeline e quindi Nuova pipeline.
Selezionare GitHub quando viene richiesto il percorso del codice sorgente e quindi selezionare il repository.
Selezionare il modello di pipeline Docker: compilare ed eseguire il push di un'immagine nel Registro dei container di Azure .
Selezionare la sottoscrizione di Azure e quindi selezionare Continua.
Seleziona il tuo registro Contenitori dal menu a discesa, e poi seleziona Convalida e configura.
Esaminare il modello YAML della pipeline, quindi selezionare Salva ed esegui per compilare e pubblicare l'immagine Docker in Registro Azure Container.
trigger: - main resources: - repo: self variables: # Container registry service connection established during pipeline creation dockerRegistryServiceConnection: '{{ containerRegistryConnection.Id }}' imageRepository: 'javascriptdocker' containerRegistry: 'sampleappcontainerregistry.azurecr.io' dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile' tag: '$(Build.BuildId)' # Agent VM image name vmImageName: 'ubuntu-latest' stages: - stage: Build displayName: Build and push stage jobs: - job: Build displayName: Build pool: vmImage: $(vmImageName) steps: - task: Docker@2 displayName: Build and push an image to container registry inputs: command: buildAndPush repository: $(imageRepository) dockerfile: $(dockerfilePath) containerRegistry: $(dockerRegistryServiceConnection) tags: | $(tag)
Per visualizzare l'immagine Docker pubblicata al termine dell'esecuzione della pipeline, passare al registro contenitori nel portale di Azure e quindi selezionare Repository.
Per distribuire l'immagine dal registro contenitori, abilitare l'account utente amministratore. Passare al registro contenitori nel portale di Azure e selezionare Chiavi di accesso. Selezionare quindi il pulsante Attiva/Disattiva per Abilitare l'utente amministratore.
Creare un'app Web
Accedere al portale di Azure.
Selezionare Crea una risorsa>Contenitori e quindi scegliere App Web per contenitori.
Immettere un nome per la nuova app Web e creare un nuovo gruppo di risorse. Selezionare Linux come Sistema operativo.
Nella sezione Piani tariffari selezionare il piano F1 Gratuito.
Seleziona Rivedi e crea. Esaminare la configurazione e selezionare Crea al termine.
Distribuire all'app Web per contenitori
- YAML
- Classico
In questo YAML si compila e si esegue il push di un'immagine Docker in un registro contenitori e quindi la si distribuisce nell'app Web di Azure per contenitori. Nella fase di compilazione si compila e si esegue il push di un'immagine Docker in un Registro Azure Container con l'attività Docker@2. L'attività AzureWebAppContainer@1 distribuisce l'immagine nell'app Web per contenitori.
trigger:
- main
resources:
- repo: self
variables:
## Add this under variables section in the pipeline
azureSubscription: <Name of the Azure subscription>
appName: <Name of the Web App>
containerRegistry: <Name of the Azure container registry>
dockerRegistryServiceConnection: '4fa4efbc-59af-4c0b-8637-1d5bf7f268fc'
imageRepository: <Name of image repository>
dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
tag: '$(Build.BuildId)'
vmImageName: 'ubuntu-latest'
stages:
- stage: Build
displayName: Build and push stage
jobs:
- job: Build
displayName: Build
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
## Add the below snippet at the end of your pipeline
- task: AzureWebAppContainer@1
displayName: 'Azure Web App on Container Deploy'
inputs:
azureSubscription: $(azureSubscription)
appName: $(appName)
containers: $(containerRegistry)/$(imageRepository):$(tag)
Eseguire la distribuzione in uno slot di distribuzione
- YAML
- Classico
Configurare il contenitore app Web di Azure per avere più slot. Gli slot consentono di distribuire in modo sicuro l'app e testarla prima di renderla disponibile ai clienti. Per altre informazioni, vedere Creare ambienti di staging.
Il frammento di codice YAML seguente illustra come eseguire la distribuzione in uno slot di staging e quindi passare a uno slot di produzione:
- task: AzureWebAppContainer@1
inputs:
azureSubscription: '<Azure service connection>'
appName: '<Name of the web app>'
containers: $(containerRegistry)/$(imageRepository):$(tag)
deployToSlotOrASE: true
resourceGroupName: '<Name of the resource group>'
slotName: staging
- task: AzureAppServiceManage@0
inputs:
azureSubscription: '<Azure service connection>'
WebAppName: '<name of web app>'
ResourceGroupName: '<name of resource group>'
SourceSlot: staging
SwapWithProduction: true
Domande frequenti
D: Come è possibile trovare le credenziali del Registro di sistema Docker?
R: Passare al portale di Azure e selezionare l'app Web per contenitori. Selezionare Impostazioniapplicazione> e quindi selezionare per visualizzare il valore.