Compilación e inserción de imágenes de Docker en Azure Container Registry mediante plantillas de Docker

Azure DevOps Services

En este tutorial paso a paso, aprenderá a configurar una canalización de integración continua para compilar una aplicación contenedorizada. Las nuevas solicitudes de incorporación de cambios desencadenan la canalización para compilar y publicar imágenes de Docker en Azure Container Registry.

Requisitos previos

Obtención del código

Bifurque o clone la aplicación de ejemplo pipeline-javascript-docker:

https://github.com/MicrosoftDocs/pipelines-javascript-docker

Creación de un registro de contenedor

  1. Inicie sesión en Azure y, luego, seleccione el botón Azure Cloud Shell en la esquina superior derecha.

    Azure Cloud Shell button

  2. Ejecute los siguientes comandos para crear un grupo de recursos y una instancia de Azure Container Registry mediante la CLI de Azure.

    # Create a resource group
    az group create --name myapp-rg --location eastus
    
    # Create a container registry
    az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
    

Nota:

El nombre de Container Registry debe estar en minúsculas.

También puede usar la interfaz de usuario web de Azure Portal para crear la instancia de Azure Container Registry. Consulte Creación de un registro de contenedor para más información.

Importante

Debe habilitar la cuenta de usuario administrador para poder implementar una imagen de Docker desde una instancia de Azure Container Registry. Consulte Autenticación de Container Registry para más información.

Creación de la canalización

  1. Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.

  2. Seleccione Canalizaciones y, luego, Nueva canalización para crear una nueva canalización.

    Create a new pipeline

  3. Seleccione YAML de GitHub y, luego, elija Autorizar Azure Pipelines para proporcionar los permisos adecuados para acceder al repositorio.

  4. Es posible que se le pida que inicie sesión en GitHub. Si es así, escriba las credenciales de GitHub y, luego, elija el repositorio en la lista de repositorios.

  5. En la pestaña Configurar, seleccione la tarea Docker - Compilar e insertar una imagen en Azure Container Registry tarea.

    Build and push Docker images to Azure Container Registry

  6. En Suscripción de Azure, seleccione su suscripción y, luego, elija Continuar.

  7. Seleccione Registro de contenedor en el menú desplegable y, luego, rellene el campo Nombre de imagen con el nombre de la imagen de contenedor.

  8. Cuando haya terminado, seleccione Validar y configurar.

    A screenshot showing how to configure a docker pipeline to build and publish an image to Azure Container Registry

    A medida que Azure Pipelines cree la canalización, sucederá lo siguiente:

    • Se creará una conexión de servicio del registro de Docker para permitir que la canalización inserte imágenes en el registro de contenedor.

    • Genere un archivo azure-pipelines.yml, que define la canalización.

  9. Revise la canalización YAML y, cuando esté listo, seleccione Guardar y ejecutar.

    Review your pipeline, save & run

  10. Agregue un mensaje de confirmación y, luego, seleccione Guardar y ejecutar para confirmar los cambios y ejecutar la canalización.

  11. A medida que se ejecute la canalización, seleccione el trabajo de compilación para ver la canalización en acción.

    Monitor builds

Compilación de la canalización

La canalización que acabamos de crear en la sección anterior se generó a partir del archivo YAML de la plantilla de contenedor de Docker. La fase de compilación usa la tarea de DockerDocker@2 para compilar e insertar la imagen de Docker en el registro de contenedor.

- 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)

Limpieza de recursos

Si no va a seguir usando esta aplicación, puede eliminar los recursos que creó en este tutorial para evitar incurrir en cargos continuos. Ejecute lo siguiente para eliminar el grupo de recursos.

az group delete --name myapp-rg