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.
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 '.
Después de crear un nuevo proyecto, debería verse así:
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.
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.
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:
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'.
En la siguiente pantalla, simplemente presione el botón "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'.
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.
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':
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.
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
.
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.
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:
Cuando termine, puede navegar hasta el 'Centro de implementación' y ver los registros de la siguiente manera:
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.