GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo ejecutar una aplicación .NET en Docker

Docker es un servicio de creación de contenedores, que se utiliza para ejecutar aplicaciones en entornos aislados empaquetados con todas las dependencias y el código que necesita para funcionar. Puede ejecutar todo tipo de aplicaciones, incluidos los programas basados ​​en .NET que utilizan imágenes de tiempo de ejecución proporcionadas por Microsoft.

Dockerización de .NET

Microsoft proporciona imágenes base prediseñadas para ejecutar aplicaciones .NET. No necesitará manejar la instalación del tiempo de ejecución o SDK de .NET en su contenedor de Docker, ya que simplemente puede ampliar desde la imagen base de Microsoft para la versión de .NET que usa su aplicación.

A menos que planee implementar contenedores de Windows en un servidor de Windows, deberá usar .NET Core o .NET 5. El tiempo de ejecución de .NET Framework anterior no es multiplataforma y no se ejecutará en contenedores basados ​​en Linux.

Si no tiene Docker instalado en su máquina de desarrollo, deberá instalar Docker Desktop para tener acceso a la CLI. Si usa WSL en Windows, querrá habilitar el motor basado en WSL 2, que proporciona un mejor rendimiento.

Para probar las cosas, crearemos una nueva aplicación API ASP.NET. Se aplicará el mismo procedimiento general para cualquier tipo de aplicación, ya que lo único que hace Docker es ejecutar una compilación cada vez que compila el contenedor e iniciar su aplicación con un comando de punto de entrada.

Crea un nuevo archivo llamado Dockerfile en la raíz de su proyecto, donde se encuentra su solución. Pegue la siguiente configuración:

FROM mcr.microsoft.com/dotnet/core/sdk AS build-env
WORKDIR /app

# Copy csproj and restore
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "DockerTest.dll"]

Este Dockerfile extrae la imagen SDK de .NET Core para realizar la compilación. Copia el .csproj over y restaura, luego copia todo lo demás y ejecuta una compilación. Luego, construye una nueva imagen a partir de la imagen de .NET Runtime y copia los artefactos de construcción.

Finalmente, el punto de entrada se define aquí como dotnet DockerTest.dll . Esto iniciará el servidor web ASP.NET, aunque es posible que deba cambiar los parámetros de su aplicación o especificar un comando de punto de entrada completamente diferente.

Puede probar la ejecución de su contenedor con docker container run , pasándolo en el ID del contenedor de compilación:

docker container run containerid

Para una aplicación ASP.NET, deberá abrir puertos asignando un puerto en el host a un puerto en el contenedor:

docker run -p 80:80 containerid

Puede leer nuestra guía para trabajar con Docker y Dockerfiles para obtener más información.


Docker
  1. ¿Cómo ejecutar un programa dentro de un contenedor Docker?

  2. Cómo conectar contenedores Docker

  3. Cómo ejecutar MySQL en un contenedor Docker

  4. Cómo ejecutar un comando en un contenedor Docker en ejecución

  5. Cómo instalar Docker y ejecutar contenedores Docker en Ubuntu

Cómo ejecutar Docker como usuario no root en Linux

Cómo usar SSH en un contenedor Docker y ejecutar comandos

Cómo ejecutar PHPMyAdmin en un contenedor Docker

Cómo ejecutar Grafana en un contenedor Docker

Cómo ejecutar Jenkins en Docker usando Docker Compose con Volúmenes

Cómo ejecutar contenedores Docker