Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Con Azure Pipelines, se puede compilar, probar e implementar automáticamente aplicaciones web en un contenedor de aplic. web de Azure App Service en Linux. En este artículo, aprenderá a usar canalizaciones YAML o clásicas para:
- Compile y publique una imagen de Docker en Azure Container Registry.
- Cree una aplicación web de Azure.
- Implemente un contenedor en Azure App Service.
- Desplegar en ranuras de implementación.
Requisitos previos
Producto | Requisitos |
---|---|
Azure DevOps | - Una organización y un proyecto de Azure DevOps.
cree una de forma gratuita. - Permisos: - Para conceder acceso a todas las canalizaciones del proyecto: debe ser miembro del grupo Administradores de proyectos. - Para crear conexiones de servicio: debe tener el rol Administrador o Creador para las conexiones de servicio. - Tener la capacidad de ejecutar canalizaciones en agentes hospedados por Microsoft. Puede comprar un trabajo paralelo o solicitar un nivel gratis. |
GitHub (en inglés) | - Una cuenta de GitHub . |
Celeste | - Una instancia de Azure Container Registry. Cree un registro de contenedor de Azure si aún no tiene uno. |
Obtención del código
Bifurque la siguiente aplicación de ejemplo en GitHub.
https://github.com/spring-guides/gs-spring-boot-docker.git
Compilación y publicación de la imagen de Docker en Azure Container Registry
Para completar esta sección correctamente, debe tener una Azure Container Registry. Consulte la sección Requisitos previos para más información.
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Seleccione Canalizaciones y, luego, Nueva canalización.
Seleccione GitHub cuando se le solicite la ubicación del código fuente y, a continuación, seleccione el repositorio.
Seleccione Docker: build and push an image to Azure Container Registry pipeline template (Docker: compilar e insertar una imagen en Azure Container Registry plantilla de canalización).
En Suscripción de Azure, seleccione su suscripción y, luego, elija Continuar.
Seleccione el registro de contenedor en el menú desplegable y, a continuación, seleccione Validar y configurar.
Revise la plantilla YAML de canalización y, a continuación, seleccione Guardar y ejecutar para compilar y publicar la imagen de Docker en 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)
Para ver la imagen de Docker publicada una vez completada la ejecución de la canalización, vaya al registro de contenedor en Azure Portal y seleccione Repositorios.
Para implementar la imagen desde el registro de contenedor, habilite la cuenta de usuario administrador. Vaya al registro de contenedor en Azure Portal y seleccione Claves de acceso. A continuación, seleccione el botón de conmutación para habilitar el usuario administrador.
Crear una aplicación web de
Acceda a Portal Azure.
Seleccione Crear un recurso>Contenedores y, a continuación, elija Aplicación web para contenedores.
Escriba un nombre para la nueva aplicación web y cree un nuevo grupo de recursos. Seleccione Linux como Sistema operativo.
En la sección Planes de precios , seleccione el plan F1 Gratis.
Seleccione Revisar y crear. Revise la configuración y seleccione Crear cuando haya terminado.
Implementación en Web App for Containers
En este YAML, compilará e insertará una imagen de Docker en un registro de contenedor y, a continuación, la implementará en Azure Web App for Containers. En la fase de compilación, compilará e insertará una imagen de Docker en un Azure Container Registry con la tarea Docker@2. La tarea AzureWebAppContainer@1 implementa la imagen en 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)
Implementación en ranuras de implementación
Configure el contenedor de Azure Web App para tener varias ranuras. Las ranuras le permiten implementar la aplicación de forma segura y probarla antes de ponerla a disposición de los clientes. Obtenga más información en Creación de entornos de ensayo.
El siguiente fragmento de código YAML muestra cómo implementar en un espacio de ensayo y, a continuación, cambiar 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
Preguntas más frecuentes
P: ¿Cómo puedo encontrar mis credenciales del registro de Docker?
R: Vaya a Azure Portal y seleccione la aplicación web para contenedores. Seleccione Configuración>de la aplicación y, a continuación, seleccione para mostrar el valor.