Migración de una aplicación de ASP.NET a Azure App Service con un contenedor de Windows (versión preliminar)Migrate an ASP.NET app to Azure App Service using a Windows container (Preview)

Azure App Service proporciona las pilas de aplicaciones predefinidas en Windows, como ASP.NET o Node.js, que se ejecutan en IIS.Azure App Service provides pre-defined application stacks on Windows like ASP.NET or Node.js, running on IIS. El entorno preconfigurado de Windows bloquea el sistema operativo desde el acceso administrativo, las instalaciones de software, cambios en la caché global de ensamblados, etc (consulte Funcionalidad del sistema operativo en Azure App Service).The preconfigured Windows environment locks down the operating system from administrative access, software installations, changes to the global assembly cache, and so on (see Operating system functionality on Azure App Service). Sin embargo, mediante un contenedor de Windows personalizado de App Service se pueden realizar los cambios en el sistema operativo que necesita la aplicación, por lo que es fácil migrar aplicaciones locales que requieran configuración personalizada para el sistema operativo y el software.However, using a custom Windows container in App Service lets you make OS changes that your app needs, so it's easy to migrate on-premises app that requires custom OS and software configuration. En este tutorial se muestra cómo migrar a App Service a partir de una aplicación de ASP.NET que utiliza fuentes personalizadas instaladas en la biblioteca de fuentes de Windows.This tutorial demonstrates how to migrate to App Service an ASP.NET app that uses custom fonts installed in the Windows font library. Implemente una imagen de Windows con configuración personalizada de Visual Studio en Azure Container Registry y ejecútela en App Service.You deploy a custom-configured Windows image from Visual Studio to Azure Container Registry, and then run it in App Service.

Muestra la aplicación web que se ejecuta en un contenedor Windows.

Requisitos previosPrerequisites

Para completar este tutorial:To complete this tutorial:

Instalación local de la aplicaciónSet up the app locally

Descarga del ejemploDownload the sample

En este paso se configura el proyecto de .NET local.In this step, you set up the local .NET project.

El proyecto de ejemplo contiene una aplicación de ASP.NET sencilla que usa una fuente personalizada instalada en la biblioteca de fuentes de Windows.The sample project contains a simple ASP.NET application that uses a custom font that is installed into the Windows font library. No es necesario instalar fuentes, pero es un ejemplo de aplicación integrada con el sistema operativo subyacente.It's not necessary to install fonts, but it's an example of an app that is integrated with the underlying OS. Para migrar este tipo de aplicación a App Service, debe o bien rediseñar el código para quitar la integración o migrarla como está a un contenedor de Windows personalizado.To migrate such an app to App Service, you either rearchitect your code to remove the integration, or migrate it as-is in a custom Windows container.

Instalación de la fuenteInstall the font

En el Explorador de Windows, vaya a custom-font-win-container-master/CustomFontSample, haga clic con el botón derecho en FrederickatheGreat Regular.ttf y seleccione Instalar.In Windows Explorer, navigate to custom-font-win-container-master/CustomFontSample, right-click FrederickatheGreat-Regular.ttf, and select Install.

Esta fuente está disponible públicamente en Google Fonts.This font is publicly available from Google Fonts.

Ejecución la aplicaciónRun the app

Abra el archivo custom-font-win-container/CustomFontSample.sln en Visual Studio.Open the custom-font-win-container/CustomFontSample.sln file in Visual Studio.

Escriba Ctrl+F5 para ejecutar la aplicación sin depurarla.Type Ctrl+F5 to run the app without debugging. La aplicación se muestra en el explorador predeterminado.The app is displayed in your default browser.

Cuadro de diálogo Nuevo proyecto de ASP.NET

Dado que usa una fuente instalada, la aplicación no se puede ejecutar en el espacio aislado de App Service.Because it uses an installed font, the app can't run in the App Service sandbox. Sin embargo, puede implementarla mediante un contenedor de Windows en su lugar, ya que puede instalar la fuente en el contenedor de Windows.However, you can deploy it using a Windows container instead, because you can install the font in the Windows container.

Configuración del contenedor de WindowsConfigure Windows container

En el Explorador de soluciones, haga clic con el botón derecho en el proyecto CustomFontSample y seleccione Agregar > Container Orchestration Support (Compatibilidad con la orquestación de contenedores).In Solution Explorer, right-click the CustomFontSample project and select Add > Container Orchestration Support.

Cuadro de diálogo Nuevo proyecto de ASP.NET

Seleccione Docker Compose > Aceptar.Select Docker Compose > OK.

El proyecto ahora está configurado para ejecutarse en un contenedor de Windows.Your project is now set up to run in a Windows container. Dockerfile se agrega al proyecto CustomFontSample y, a la solución, un proyecto docker-compose.A Dockerfile is added to the CustomFontSample project, and a docker-compose project is added to the solution.

Desde el Explorador de soluciones, abra Dockerfile.From the Solution Explorer, open Dockerfile.

Tiene que usar una imagen principal compatible.You need to use a supported parent image. Reemplace la línea FROM por el código siguiente para cambiar la imagen primaria:Change the parent image by replacing the FROM line with the following code:

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019

Agregue la siguiente línea al final del archivo y guárdelo:At the end of the file, add the following line and save the file:

RUN ${source:-obj/Docker/publish/InstallFont.ps1}

Puede encontrar InstallFont.ps1 en el proyecto CustomFontSample.You can find InstallFont.ps1 in the CustomFontSample project. Es un sencillo script que instala la fuente.It's a simple script that installs the font. Puede encontrar una versión más compleja del script en el Centro de scripts.You can find a more complex version of the script in the Script Center.

Nota

Para probar el contenedor de Windows localmente, asegúrese de que Docker se ha iniciado en la máquina local.To test the Windows container locally, make sure that Docker is started on your local machine.

Publicación en Azure Container RegistryPublish to Azure Container Registry

Azure Container Registry puede almacenar las imágenes para las implementaciones de contenedor.Azure Container Registry can store your images for container deployments. Puede configurar App Service para usar imágenes hospedadas en Azure Container Registry.You can configure App Service to use images hosted in Azure Container Registry.

Apertura del asistente para publicaciónOpen publish wizard

En el Explorador de soluciones, haga clic con el botón derecho en el proyecto CustomFontSample y seleccione Publicar.In the Solution Explorer, right-click the CustomFontSample project and select Publish.

Cuadro de diálogo Nuevo proyecto de ASP.NET

Creación y publicación del registroCreate registry and publish

En el asistente para publicación, seleccione Container Registry > Crear una instancia de Azure Container Registry > Publicar.In the publish wizard, select Container Registry > Create New Azure Container Registry > Publish.

Cuadro de diálogo Nuevo proyecto de ASP.NET

Inicio de sesión con la cuenta de AzureSign in with Azure account

En el cuadro de diálogo Crear una instancia de Azure Container Registry, seleccione Agregar una cuenta e inicie sesión en su suscripción de Azure.In the Create a new Azure Container Registry dialog, select Add an account, and sign in to your Azure subscription. Si ya ha iniciado sesión, seleccione la cuenta que contiene la suscripción deseada en la lista desplegable.If you're already signed in, select the account containing the desired subscription from the dropdown.

Inicio de sesión en Azure

Configuración del registroConfigure the registry

Configure el nuevo registro de contenedor en función de los valores sugeridos en la siguiente tabla.Configure the new container registry based on the suggested values in the following table. Cuando haya terminado, haga clic en Crear.When finished, click Create.

ConfiguraciónSetting Valor sugeridoSuggested value Para obtener más informaciónFor more information
Prefijo de DNSDNS Prefix Mantenga el nombre de registro generado o cámbielo por otro nombre único.Keep the generated registry name, or change it to another unique name.
Grupo de recursosResource Group Haga clic en Nuevo, escriba myResourceGroup y haga clic en Aceptar.Click New, type myResourceGroup, and click OK.
SKUSKU BásicoBasic Planes de tarifaPricing tiers
Ubicación del registroRegistry Location Oeste de EuropaWest Europe

Configuración del registro de contenedor de Azure

Se abre una ventana de terminal que muestra el progreso de la implementación de la imagen.A terminal window is opened and displays the image deployment progress. Espere a que la implementación se complete.Wait for the deployment to complete.

Inicio de sesión en AzureSign in to Azure

Inicie sesión en Azure Portal en https://portal.azure.com.Sign in to the Azure portal at https://portal.azure.com.

Creación de una aplicación webCreate a web app

En el menú izquierdo, seleccione Crear un recurso > Web > Web App for Containers.From the left menu, select Create a resource > Web > Web App for Containers.

Configuración de los aspectos básicos de la aplicaciónConfigure app basics

En la pestaña Aspectos básicos, configure los valores según la tabla siguiente y, a continuación, haga clic en Siguiente: Docker.In the Basics tab, configure the settings according to the following table, then click Next: Docker.

ConfiguraciónSetting Valor sugeridoSuggested value Para obtener más informaciónFor more information
SuscripciónSubscription Asegúrese de que se ha seleccionado la suscripción correcta.Make sure the correct subscription is selected.
Grupo de recursosResource Group Seleccione Crear nuevo, escriba myResourceGroup y haga clic en Aceptar.Select Create new, type myResourceGroup, and click OK.
NombreName Escriba un nombre único.Type a unique name. La dirección URL de la aplicación web es http://<app-name>.azurewebsites.net, donde <app-name> es el nombre de la aplicación.The URL of the web app is http://<app-name>.azurewebsites.net, where <app-name> is your app name.
PublicarPublish Contenedor de DockerDocker container
Sistema operativoOperating System WindowsWindows
RegiónRegion Oeste de EuropaWest Europe
Plan de WindowsWindows Plan Seleccione Crear nuevo, escriba myAppServicePlan y haga clic en Aceptar.Select Create new, type myAppServicePlan, and click OK.

La pestaña Aspectos básicos debe tener el siguiente aspecto:Your Basics tab should look like this:

Muestra la pestaña Aspectos básicos que se usa para configurar la aplicación web.

Configuración del contenedor de WindowsConfigure Windows container

En la pestaña Docker, configure el contenedor de Windows personalizado como se muestra en la tabla siguiente y seleccione Revisar y crear.In the Docker tab, configure your custom Windows container as shown in the following table, and select Review + create.

ConfiguraciónSetting Valor sugeridoSuggested value
Origen de la imagenImage Source Registro de Azure ContainerAzure Container Register
RegistroRegistry Seleccione el registro que ha creado anteriormente.Select the registry you created earlier.
ImagenImage customfontsamplecustomfontsample
TagTag latestlatest

Creación completa de la aplicaciónComplete app creation

Haga clic en Crear y espere que Azure cree los recursos necesarios.Click Create and wait for Azure to create the required resources.

Navegación hasta la aplicación webBrowse to the web app

Una vez completada la operación de Azure, se muestra un cuadro de notificación.When the Azure operation is complete, a notification box is displayed.

Muestra que se ha completado la operación de Azure.

  1. Haga clic en Ir al recurso.Click Go to resource.

  2. En la página de la aplicación, haga clic en el vínculo situado bajo URL.In the app page, click the link under URL.

Se abre una nueva página del explorador en la página siguiente:A new browser page is opened to the following page:

Muestra la nueva página del explorador para la aplicación web.

Espere unos minutos e inténtelo de nuevo hasta que llegue a la página principal con la atractiva fuente esperada:Wait a few minutes and try again, until you get the homepage with the beautiful font you expect:

Muestra la página principal con la fuente que ha configurado.

¡Enhorabuena!Congratulations! Ha migrado una aplicación de ASP.NET a Azure App Service en un contenedor de Windows.You've migrated an ASP.NET application to Azure App Service in a Windows container.

Consulta de los registros de inicio del contenedorSee container start-up logs

El contenedor de Windows puede tardar un tiempo en cargarse.It may take some time for the Windows container to load. Para ver el progreso, vaya a la siguiente dirección URL sustituyendo <app-name> por el nombre de la aplicación.To see the progress, navigate to the following URL by replacing <app-name> with the name of your app.

https://<app-name>.scm.azurewebsites.net/api/logstream

Los registros transmitidos tienen este aspecto:The streamed logs looks like this:

14/09/2018 23:16:19.889 INFO - Site: fonts-win-container - Creating container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest.
14/09/2018 23:16:19.928 INFO - Site: fonts-win-container - Create container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest succeeded. Container Id 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:23.405 INFO - Site: fonts-win-container - Start container succeeded. Container: 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Configuring container
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container start-up and configuration completed successfully