Implementación de un App de Azure personalizado
Puede usar las App Service en Linux y las canalizaciones para implementar automáticamente la aplicación web en un contenedor personalizado en Azure.
Azure App Service es un entorno administrado para hospedar aplicaciones web, API REST y back-ends móviles. Puede desarrollar en sus lenguajes favoritos, incluidos .NET, Python y JavaScript.
Usará la tarea Azure Web App for Container para implementar en Azure App Service en la canalización.
Para obtener información sobre cómo implementar en una aplicación web de Azure sin un contenedor, consulte Implementación de una aplicación web de Azure.
Nota
Esta guía se aplica a Team Foundation Server (TFS) versión 2017.3 y posteriores.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Un contenedor App Service en Linux personalizado implementado. Para empezar, consulte Ejecución de un contenedor personalizado en Azure.
Compilación e inserción de la imagen
Azure Pipelines se puede usar para insertar imágenes en registros de contenedor, como Azure Container Registry (ACR), Docker Hub, Registros de contenedor de Google, etc. En este ejemplo se inserta una imagen para Azure Container Registry.
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Vaya a Pipelinesy, a continuación, seleccione Nueva canalización.
Seleccione GitHub como ubicación del código fuente y seleccione el repositorio.
Nota
Puede que se le redirija a GitHub para iniciar sesión. Si es así, escriba sus credenciales de GitHub. Es posible que se le redirija a GitHub para instalar la aplicación Azure Pipelines. Si es así, seleccione Aprobar e instalar.
En la pestaña Configurar, seleccione Docker : Compilar e insertar una imagen para Azure Container Registry tarea.
Seleccione la suscripción de Azurey, a continuación, seleccione el registro de contenedor en el menú desplegable.
Proporcione un nombre de imagen a la imagen de contenedor y, a continuación, seleccione Validar y configurar.
A Azure Pipelines crea la canalización, se hace lo siguiente:
Crea una conexión de servicio de registro de Docker para habilitar la canalización para insertar imágenes en el registro de contenedor.
Genera un archivo azure-pipelines.yml, que define la canalización.
Guarde y ejecute la canalización. La canalización de YAML debe tener un aspecto similar al siguiente:
- stage: Build
displayName: Build and push stage
jobs:
- job: Build
displayName: Build job
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)
Si es un usuario de canalización experimentado y ya tiene una canalización de YAML para compilar la aplicación .NET Core, es posible que los ejemplos siguientes le sean útiles.
Las canalizaciones yaml no están disponibles en TFS.
Ahora que la canalización de compilación está en su lugar, aprenderá algunas configuraciones más comunes para personalizar la implementación de Azure Container Web App.
Implementación con Azure Web App for Container
Implemente en un App de Azure personalizado con la tarea Azure Web App for Container.
trigger:
- master
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)
La tarea Azure Web App on Container extraerá la imagen de Docker adecuada correspondiente al BuildId del repositorio especificado y, a continuación, implementará la imagen en el Azure App Service en Linux.
Las canalizaciones yaml no están disponibles en TFS.
Implementación en una ranura
Puede configurar el contenedor de Azure Web App para que tenga varias ranuras. Las ranuras permiten implementar la aplicación de forma segura y probarla antes de ponerla a disposición de los clientes.
El siguiente fragmento de código YAML muestra cómo implementar en un espacio de ensayo y, a continuación, intercambiar a un espacio de producción:
- 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
Las canalizaciones yaml no están disponibles en TFS.
Preguntas más frecuentes
Cómo buscar mis credenciales del Registro para la aplicación web?
App Service información sobre el registro y la imagen para extraer la imagen privada. En la Azure Portal, vaya a Configuración del contenedor desde la aplicación web y actualice el origen de la imagen, Registro y guárdelo.
