paint-brush
Cómo implementar una aplicación web ASP.NET Core en Azure desde la imagen de Dockerpor@igorlopushko
890 lecturas
890 lecturas

Cómo implementar una aplicación web ASP.NET Core en Azure desde la imagen de Docker

por Igor Lopushko6m2024/01/19
Read on Terminal Reader

Demasiado Largo; Para Leer

En este artículo, brindaré una guía detallada sobre cómo crear una aplicación web ASP.NET Core simple, crear una imagen acoplable con su aplicación y la forma más sencilla de implementarla en Azure. Al final, comprenderá bien cómo implementar su aplicación web y hacerla accesible para todo el mundo.
featured image - Cómo implementar una aplicación web ASP.NET Core en Azure desde la imagen de Docker
Igor Lopushko HackerNoon profile picture

Introducción

Como desarrolladores web, solíamos encontrar alojamiento adecuado para nuestras aplicaciones con todas las complicaciones de implementarlas y mantenerlas. Pero ahora vivimos en una nueva era en la que los proveedores de la nube pueden hacer muchas cosas por nosotros casi sin costo alguno. En cuanto a los desarrolladores de .NET, Microsoft Azure parece la opción más natural para alojar aplicaciones web.


Docker es otra pieza de tecnología que permite abstraerse de la plataforma y el entorno en el que está ejecutando su aplicación.


En este artículo, brindaré una guía detallada sobre cómo crear una aplicación web ASP.NET Core simple, crear una imagen acoplable con su aplicación y la forma más sencilla de implementarla en Azure. Al final, comprenderá bien cómo implementar su aplicación web y hacerla accesible para todo el mundo.

1. Cree una aplicación web ASP.NET Core

Voy a utilizar JetBrains Rider para el desarrollo de este artículo. Pero puedes usar cualquier herramienta que quieras.


Primero, necesitas crear un nuevo proyecto. Llamémoslo simple ' aplicación web '.

Crear nueva solución


Después de crear un nuevo proyecto, debería verse así:

Estructura del proyecto


2. Crea una imagen de Docker

Sin ningún cambio en el proyecto, nos centraremos en el Dockerfile . Modifíquelo como en el siguiente ejemplo:

 FROM mcr.microsoft.com/dotnet/aspnet:6.0 as base WORKDIR /app EXPOSE 8080 ENV ASPNETCORE_URLS http://+:8080 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build COPY . /src WORKDIR /src RUN dotnet build "webapp.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "webapp.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "webapp.dll"]


Debes prestar atención a las líneas EXPOSE 8080 y ENV ASPNETCORE_URLS http://+:8080 para poder conectarte vía HTTP al contenedor acoplable.


Cree una imagen de Docker desde la línea de comando. Debe navegar hasta el directorio del proyecto webapp y ejecutar el siguiente comando:

 DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd64 --tag drmoz/webapp:latest .


Lo estoy ejecutando en Mac M1 y tengo que especificar el parámetro --platform explícitamente para que sea compatible con la implementación de Azure. También tengo que activar Docker Buildkit especificando el parámetro DOCKER_BUILDKIT=1 y usando buildx para poder construir una imagen para otra arquitectura.


Si lo está ejecutando en la plataforma Intel x86/x64, puede usar el comando docker build sin la necesidad de especificar el parámetro --platform y activar buildx .


Puedes etiquetar tu imagen de manera diferente, pero como voy a usar Docker Hub, tengo que especificar el nombre de mi cuenta: drmoz como parte de la etiqueta de imagen drmoz/webapp:latest .


Cuando se crea una imagen, puede verificar si está presente en Docker ejecutando el siguiente comando:

 docker images


Debería estar en la lista:

 REPOSITORY TAG IMAGE ID CREATED SIZE drmoz/webapp latest 0cfac748256b 37 minutes ago 216MB


Ejecutemos el contenedor acoplable para verificar que la imagen recién creada funcione bien. Ejecute el comando docker run para iniciar un contenedor:

 docker run -p 5555:8080 drmoz/webapp:latest


Especifique el parámetro -p para asignar el puerto 8080 dentro del contenedor al puerto 5555 de su máquina local. Además, especifique el nombre de la imagen para crear el contenedor. En mi caso, es drmoz/webapp:latest .


Ahora puede navegar en su navegador http://localhost:5555 para ver la página de inicio de la aplicación web ASP.NET Core.

Aplicación web ASP.NET Core: página de inicio



Necesitamos enviar una imagen a Docker Hub . Antes de eso, debe registrarse en Docker Registry y crear un repositorio. Haga clic en el botón ' Crear repositorio ' en la esquina derecha de la página de inicio.

El nuevo repositorio de Docker Hub


Especifique el campo Repository Name y mantenga la visibilidad del repositorio Public .


En la línea de comando, debes iniciar sesión en el registro de Docker Hub:

 docker login


Después de eso, podrá enviar una imagen recién creada al registro:

 docker push drmoz/webapp:latest


Navegue hasta el repositorio y verá la información sobre la imagen:

Repositorio de Docker Hub


3. Cree una aplicación web en Azure

Ahora estamos listos para implementar nuestra aplicación web ASP.NET Core en Azure. Iniciemos sesión en Azure Portal y creemos un nuevo grupo de recursos. Especifique el nombre del grupo de recursos como ' webapp-rg ' y haga clic en el botón 'Revisar + crear'.


Crear grupo de recursos: pestaña Básico


En la siguiente pantalla, simplemente presione el botón "Crear".

Crear grupo de recursos: pestaña Revisar + crear


Ahora podemos crear una aplicación web. Navegue a la página "Crear recurso" y busque WebApp. Haga clic en el botón 'Crear'.

Crear aplicación web: pestaña Básica

Debe especificar el Resource Group que creamos anteriormente. Además, especifique un Name único para la aplicación web. Seleccione 'Contenedor Docker' en el campo Publish . Más adelante podremos especificar qué imagen de Docker usar.


Seleccione las opciones adecuadas en la sección Pricing plans , pero recomiendo utilizar un neumático Free F1 para realizar pruebas. Navegue a la pestaña Docker.


Crear aplicación web: pestaña Docker


En esta pestaña, seleccione 'Docker Hub' en el campo Image Source . Seleccione 'Público' en el campo Access Type y especifique la Image and tag con el nombre de la imagen que enviamos a Docker Hub. Navegue a la pestaña 'Revisar + crear'. En esta pestaña, haga clic en el botón 'Crear':

Crear aplicación web: pestaña Revisar + crear


Cuando se implemente el nuevo recurso, se le preguntará si desea navegar hasta este recurso; hazlo. Podrá ver información sobre la aplicación web.

Información de recursos de la aplicación web


Haga clic en el botón 'Examinar' para abrir una aplicación web implementada. Si todo salió correctamente, debería ver la página de inicio de la aplicación web ASP.NET Core similar a la que vio en su navegador al navegar por http://localhost:5555 .

Habilitar la implementación continua

Si navega a la configuración del "Centro de implementación" y habilita "Implementación continua", podrá volver a implementar su imagen cada vez que inserte una nueva en Docker Hub. De esa manera, puede realizar cambios en su código, enviarlo a Docker Hub con una nueva imagen y ver los cambios en minutos en Azure.

Aplicación web: Centro de implementación

Solución de problemas de aplicaciones web de Azure

Para poder ver los registros de implementación e identificar problemas, debe habilitar el guardado de registros en el sistema de archivos en el capítulo "Registros de App Service" de la siguiente manera:

Aplicación web: registros de App Service


Cuando termine, puede navegar hasta el 'Centro de implementación' y ver los registros de la siguiente manera:

Aplicación web: Centro de implementación


Resumen

Si llega a este punto, logró crear una aplicación web ASP.NET Core; Empaquételo en la imagen de Docker e impleméntelo en Azure. Hoy en día, la tecnología hace la vida más fácil y acelera el proceso de desarrollo. Puede ver con qué facilidad puede implementar su aplicación en el proveedor de la nube y exponerla a todo el mundo, realizar algunas pruebas y ver el resultado de su trabajo.


Ahora puede profundizar en los detalles de los proveedores de la nube de Azure utilizando la documentación de Microsoft. Además, consulte la documentación de Docker para comprender mejor esta tecnología. Espero que pueda ser útil.