Cómo crear una imagen de Docker de una API web .NET

Una de las principales ventajas de Docker es que le permite ejecutar proyectos de software sin la necesidad de configurar entornos de desarrollo complejos.

Esta guía le mostrará cómo crear una imagen de Docker de una API web .NET 5. Luego, puede usar la imagen para ejecutar el código de backend desde cualquier PC que tenga Docker instalado e interactuar con la API desde su proyecto web de front-end o una aplicación móvil.

Creación de una API web .NET 5

Tanto Docker como .NET 5 son de código abierto y multiplataforma, por lo que puede seguir esta guía ya sea que utilice macOS, Windows o Linux.

Utilice la CLI de dotnet para crear un proyecto de API web ASP.NET con el siguiente comando:

 dotnet new webapi -o aspdockerapi

El comando anterior crea un proyecto llamado aspdockerapi y lo coloca en una carpeta con el mismo nombre. Además, la aplicación integra un controlador API con algunos datos de pronóstico del tiempo de muestra.

Nota : Si no tiene .NET 5 instalado en su PC, puede descargarlo desde el enlace a continuación.

Descargar : .NET 5 para Windows, macOS y Linux

Una vez que se crea el proyecto, puede ingresar a la carpeta raíz del proyecto usando el siguiente comando.

 cd aspdockerapi

Puede ejecutar y servir la API web con el comando a continuación.

 dotnet run

De forma predeterminada, la aplicación se servirá en el puerto 5001. Puede ver los datos de muestra de la aplicación en su navegador en la siguiente URL: https: // localhost: 5001 / weatherforecast y los datos de las API deben verse como se muestra a continuación.

Más información: ¿Qué es una API?

Creación de instrucciones de imagen de Docker

Para crear una imagen de Docker, debe darle al motor de Docker algunas instrucciones sobre cómo construirla. Estas instrucciones deben colocarse en un archivo llamado Dockerfile . Tenga en cuenta que el archivo no tiene extensión.

Utilice el siguiente comando para crear el Dockerfile en la carpeta raíz del proyecto de su aplicación.

 touch Dockerfile

Después de crear el Dockerfile , la estructura de la carpeta de proyectos debe ser similar a la siguiente:

Ahora, copie y pegue el código a continuación en su Dockerfile .

 FROM mcr.microsoft.com/dotnet/aspnet:5.0-focal AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS build
WORKDIR /src
COPY ["aspdockerapi.csproj", "./"]
RUN dotnet restore "./aspdockerapi.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "aspdockerapi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "aspdockerapi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "aspdockerapi.dll"]

Nota : En el Dockerfile anterior, los nombres del proyecto y dll son aspdockerapi.csproj y aspdockerapi.dll respectivamente, si su proyecto tiene un nombre diferente, asegúrese de actualizar su Dockerfile con los nombres correctos.

Comprensión de las instrucciones de Dockerfile

El Dockerfile se compone principalmente de palabras clave de Dockerfile, que por convención son palabras en mayúsculas. Las palabras clave especifican la instrucción a ejecutar en cada capa de la imagen de Docker. A continuación se muestran las principales palabras clave de Docker que utiliza el Dockerfile anterior.

1. DESDE

La palabra clave FROM especifica la imagen base en la que queremos que se construya nuestra imagen. En el Dockerfile anterior, la imagen base inicial es una imagen .NET 5 de Microsoft. La imagen base de .NET 5 contiene los componentes necesarios para ejecutar la aplicación.

2. WORKDIR

WORKDIR establece el directorio de trabajo o el contexto dentro de la imagen. En este ejemplo, el directorio / app se asigna como directorio de trabajo raíz predeterminado utilizando la siguiente declaración WORKDIR / app .

3. COPIA

La palabra clave COPY simplemente copia el contenido de una carpeta y lo coloca en otra. En este ejemplo, se usa inicialmente para copiar el archivo principal del proyecto, es decir, aspdockerapi . csproj en el directorio de trabajo de imágenes.

4. EJECUTAR

La palabra clave RUN se usa para ejecutar un comando específico de Linux dentro de una imagen de Docker. En el Dockerfile anterior, el comando RUN se usa para restaurar dependencias, construir el proyecto ASP.NET y publicar el proyecto.

5. CMD

La palabra clave CMD es un poco similar a la palabra clave RUN discutida anteriormente. También se usa para ejecutar un comando de Linux, pero a diferencia de la palabra clave RUN que ejecuta comandos para construir la imagen, la palabra clave CMD se usa para ejecutar comandos de Linux cuando se inicia la imagen, en una instancia de contenedor.

6 EXPONER

La palabra clave EXPOSE se usa para exponer un puerto dentro de la imagen de Docker al mundo exterior. En este caso, la imagen expone el puerto 80, que se utiliza para exponer la API cuando se ejecuta el contenedor Docker.

Construyendo la imagen de Docker

Para construir la imagen de Docker basada en el Dockerfile, simplemente ejecute el siguiente comando dentro de la carpeta raíz del proyecto, es decir, donde se coloca el Dockerfile .

 docker build -t dockerwebapi -f Dockerfile .

El comando anterior etiqueta la imagen de Docker con el nombre dockerwebapi y también especifica que las instrucciones para construir esta imagen están en el Dockerfile .

Una vez que la imagen haya terminado de compilarse, puede verificar si aparece como una imagen de Docker local con el siguiente comando:

 docker images

El resultado del comando anterior debe ser similar al siguiente, y la imagen ( dockerwebapi ) aparece en la primera línea en este caso.

Si no tiene Docker instalado en su PC, aquí le mostramos cómo instalar Docker en Ubuntu Linux ; de lo contrario, use el enlace a continuación para descargar e instalar Docker.

Descargar : guía de instalación y descarga de Docker

Ejecución de la imagen de Docker

Para ejecutar la imagen de Docker recién creada, use el siguiente comando. La opción -ti especifica que la imagen debe ejecutarse en un modo de terminal interactivo, y –rm especifica que el contenedor debe eliminarse inmediatamente después de salir.

 docker run -ti --rm -p 8080:80 dockerwebapi

Además, el comando especifica que el contenedor Docker debe ejecutarse en el puerto HTTP 8080, que se asigna al puerto 80 dentro del contianer.

Vaya a la URL: http: // localhost: 8080 / WeatherForecast en su navegador y encontrará que los datos de su API se entregan desde la instancia de Docker que está ejecutando.

¿Por qué utilizar Docker?

Esta guía le mostró cómo crear una imagen de Docker de una API web .NET 5.

Con Docker, puede automatizar la forma en que implementa sus aplicaciones, simplificar la configuración de los entornos de desarrollo de software y facilitar la colaboración con otros ingenieros de software.

Docker también ofrece varias ventajas sobre otras tecnologías de virtualización, por lo que probablemente debería considerar su uso en sus proyectos de ingeniería de software.