Nasazení vlastního kontejneru do služby Aplikace Azure Service pomocí Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Pomocí Služby Azure Pipelines můžete vytvářet, testovat a automaticky nasazovat webovou aplikaci do kontejneru webové aplikace služby Aplikace Azure v Linuxu. V tomto článku se dozvíte, jak používat kanály YAML nebo Classic k:
- Sestavení a publikování image Dockeru do služby Azure Container Registry
- Vytvoření webové aplikace Azure
- Nasazení kontejneru do služby Aplikace Azure Service
- Nasazení do slotů nasazení
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Účet GitHub. Pokud ho ještě nemáte, vytvořte si bezplatný účet GitHubu.
- Organizace Azure DevOps. Vytvořte organizaci, pokud ji ještě nemáte.
- An Azure Container Registry. Pokud ho ještě nemáte, vytvořte registr kontejneru Azure.
Získání kódu
Fork následující ukázkové aplikace na GitHubu
https://github.com/spring-guides/gs-spring-boot-docker.git
Sestavení a publikování image Dockeru do služby Azure Container Registry
K úspěšnému dokončení této části musíte mít službu Azure Container Registry. Podrobnosti najdete v části Požadavky.
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Kanály a pak Nový kanál.
Po zobrazení výzvy k zadání umístění zdrojového kódu vyberte GitHub a pak vyberte úložiště.
Vyberte Docker: sestavte a nasdílejte image do šablony kanálu služby Azure Container Registry.
Vyberte své předplatné Azure a pak vyberte Pokračovat.
V rozevírací nabídce vyberte registr kontejneru a pak vyberte Ověřit a nakonfigurovat.
Zkontrolujte šablonu YAML kanálu a pak vyberte Uložit a spustit , abyste sestavili a publikovali image Dockeru do služby 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)
Pokud chcete po dokončení spuštění kanálu zobrazit publikovanou image Dockeru, přejděte na webu Azure Portal do svého registru kontejneru a pak vyberte Úložiště.
Pokud chcete nasadit image z registru kontejneru, musíte povolit uživatelský účet správce. Přejděte do registru kontejneru na webu Azure Portal a vyberte Přístupové klíče. Potom vyberte přepínač a povolte uživatele správce.
Vytvoření webové aplikace
Přejděte na Azure Portal.
Vyberte Vytvořit kontejnery prostředků>a pak zvolte Web App for Containers.
Zadejte název nové webové aplikace a vytvořte novou skupinu prostředků. Vyberte Linux pro operační systém.
V části Cenové plány zvolte plán F1 Free.
Vyberte Zkontrolovat a vytvořit. Zkontrolujte konfiguraci a po dokončení vyberte Vytvořit .
Nasazení do služby Web App for Containers
V tomto YAML sestavíte a nasdílíte image Dockeru do registru kontejneru a pak ji nasadíte do Azure Web App for Containers. Ve fázi sestavení sestavíte a nasdílíte image Dockeru do služby Azure Container Registry pomocí úlohy Docker@2. Úloha AzureWebAppContainer@1 nasadí image do služby 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)
Nasazení do slotu nasazení
Kontejner webové aplikace Azure můžete nakonfigurovat tak, aby měl více slotů. Sloty umožňují bezpečně nasadit aplikaci a otestovat ji před tím, než ji zpřístupní vašim zákazníkům. Další podrobnosti najdete v tématu Vytváření přípravných prostředí .
Následující fragment kódu YAML ukazuje, jak se nasadí do přípravného slotu a pak se prohodí do produkčního slotu:
- 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
Často kladené dotazy
Otázka: Jak najdu přihlašovací údaje registru Dockeru?
A: Přejděte na web Azure Portal a pak vyberte webovou aplikaci pro kontejnery. Vyberte Nastavení konfigurační>aplikace a kliknutím zobrazte hodnotu.