Een aangepaste container implementeren in Azure-app Service met Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Met Behulp van Azure Pipelines kunt u uw web-app bouwen, testen en automatisch implementeren in een Azure-app Service Web App-container in Linux. In dit artikel leert u hoe u YAML- of klassieke pijplijnen gebruikt voor het volgende:
- Een Docker-installatiekopieën bouwen en publiceren naar Azure Container Registry
- Een Azure-web-app maken
- Een container implementeren in Azure-app Service
- Implementeren naar implementatiesites
Vereisten
- Een Azure-account met een actief abonnement. Gratis een account maken
- Een GitHub-account. Maak een gratis GitHub-account als u er nog geen hebt.
- een Azure DevOps-organisatie. Maak een organisatie als u er nog geen hebt.
- Een Azure Container Registry. Maak een Azure-containerregister als u er nog geen hebt.
Code ophalen
Fork de volgende voorbeeld-app op GitHub.
https://github.com/spring-guides/gs-spring-boot-docker.git
Een Docker-installatiekopieën bouwen en publiceren naar Azure Container Registry
Als u deze sectie wilt voltooien, moet u een Azure Container Registry hebben. Raadpleeg de sectie vereisten voor meer informatie.
Meld u aan bij uw Azure DevOps-organisatie en navigeer naar uw project.
Selecteer Pijplijnen en vervolgens Nieuwe pijplijn.
Selecteer GitHub wanneer u wordt gevraagd om de locatie van uw broncode en selecteer vervolgens uw opslagplaats.
Selecteer Docker : een installatiekopieën bouwen en pushen naar een Azure Container Registry-pijplijnsjabloon .
Selecteer uw Azure-abonnement en selecteer vervolgens Doorgaan.
Selecteer uw containerregister in de vervolgkeuzelijst en selecteer vervolgens Valideren en configureren.
Controleer de YAML-sjabloon voor de pijplijn en selecteer Opslaan en uitvoeren om de Docker-installatiekopieën te bouwen en te publiceren in uw Azure Container Registry.
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)
Als u de gepubliceerde Docker-installatiekopieën wilt weergeven nadat de pijplijnuitvoering is voltooid, gaat u naar het containerregister in Azure Portal en selecteert u Opslagplaatsen.
Als u uw installatiekopieën wilt implementeren vanuit het containerregister, moet u het gebruikersaccount van de beheerder inschakelen. Navigeer naar uw containerregister in Azure Portal en selecteer Toegangssleutels. Selecteer vervolgens de wisselknop om de gebruiker Beheerder in te schakelen.
Een web-app maken
Ga naar Azure Portal.
Selecteer Een resourcecontainer> maken en kies vervolgens Web App for Containers.
Voer een naam in voor uw nieuwe web-app en maak een nieuwe resourcegroep. Selecteer Linux voor het besturingssysteem.
Kies in de sectie Prijsplannen het gratis F1-abonnement.
Selecteer Controleren en maken. Controleer uw configuratie en selecteer Maken wanneer u klaar bent.
Implementeren in Web App for Containers
In deze YAML bouwt en pusht u een Docker-installatiekopieën naar een containerregister en implementeert u deze vervolgens in Azure Web App for Containers. In de buildfase bouwt en pusht u een Docker-installatiekopieën naar een Azure Container Registry met de Docker@2 taak. Met de AzureWebAppContainer@1 taak wordt de installatiekopieën geïmplementeerd in Web App for Containers.
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)
Implementeren in een implementatiesite
U kunt de Azure Web App-container zo configureren dat er meerdere sites zijn. Met sites kunt u uw app veilig implementeren en testen voordat u deze beschikbaar maakt voor uw klanten. Zie Faseringsomgevingen maken voor meer informatie.
In het volgende YAML-fragment ziet u hoe u implementeert in een staging-site en vervolgens wisselt naar een productiesite:
- 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
Veelgestelde vragen
V: Hoe kan ik mijn Docker-registerreferenties vinden?
A: Navigeer naar Azure Portal en selecteer vervolgens uw Web App for Containers. Selecteer De instellingen van de configuratietoepassing>en klik om de waarde weer te geven.