Ejecutar una aplicación ASP.NET Core en contenedores de Docker
Nota:
Esta no es la versión más reciente de este artículo. Para la versión actual, consulta la versión .NET 8 de este artículo.
Advertencia
Esta versión de ASP.NET Core ya no se admite. Para obtener más información, consulta la Directiva de soporte técnico de .NET y .NET Core. Para la versión actual, consulta la versión .NET 8 de este artículo.
Importante
Esta información hace referencia a un producto en versión preliminar, el cual puede sufrir importantes modificaciones antes de que se publique la versión comercial. Microsoft no proporciona ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.
Para la versión actual, consulte la versión .NET 8 de este artículo.
En este artículo se muestra cómo ejecutar una aplicación ASP.NET Core en contenedores de Docker.
Windows Home Edition no admite Hyper-V y Hyper-V es necesario para Docker.
Consulte Inclusión en un contenedor de una aplicación .NET con dotnet publish para información sobre cómo incluir una aplicación .NET en un contenedor con dotnet publish
.
Imágenes de Docker para ASP.NET Core
En este tutorial, descargará una aplicación de ejemplo de ASP.NET Core y la ejecutará en contenedores de Docker. El ejemplo funciona con contenedores de Linux y Windows.
El Dockerfile de ejemplo usa la característica de compilación en varias fases de Docker para la compilación y ejecución en distintos contenedores. Los contenedores de compilación y ejecución se crean a partir de imágenes que proporciona Microsoft en Docker Hub:
dotnet/sdk
En el ejemplo se usa esta imagen para compilar la aplicación. La imagen contiene el SDK de .NET, que incluye las herramientas de la línea de comandos (CLI). Esta imagen está optimizada para el desarrollo local, la depuración y las pruebas unitarias. Las herramientas instaladas para el desarrollo y la compilación hacen que la imagen sea relativamente grande.
dotnet/aspnet
En el ejemplo se usa esta imagen para ejecutar la aplicación. La imagen contiene el entorno de ejecución y las bibliotecas de ASP.NET Core y está optimizada para la ejecución de aplicaciones en producción. Diseñada para acelerar la implementación y el inicio de las aplicaciones, la imagen es relativamente pequeña, de forma que se optimiza el rendimiento de la red desde Docker Registry hasta el host de Docker. Solo se copian en el contenedor los archivos binarios y el contenido necesario para ejecutar una aplicación. El contenido está listo para ejecutarse, lo que permite el tiempo más rápido desde
docker run
hasta el inicio de la aplicación. En el modelo de Docker no se necesita compilación de código dinámico.
Requisitos previos
Cliente de Docker 18.03 o posterior
Descarga de la aplicación de ejemplo
Para descargar el ejemplo, clone el repositorio de Docker de .NET:
git clone https://github.com/dotnet/dotnet-docker
Probar la aplicación localmente
Vaya a la carpeta de proyecto en dotnet-docker/samples/aspnetapp/aspnetapp.
Ejecute el siguiente comando para compilar y ejecutar localmente la aplicación:
dotnet run
Vaya a
http://localhost:<port>
en un explorador para probar la aplicación.Presione Ctrl+C en el símbolo del sistema para detener la aplicación.
Ejecución en un contenedor de Linux o en un contenedor de Windows
Para ejecutarse en un contenedor de Linux, haga clic con el botón derecho en el icono cliente de Docker de la bandeja del sistema y seleccione Cambiar a contenedores de Linux.
Para ejecutarse en un contenedor de Windows, haga clic con el botón derecho en el icono cliente de Docker de la bandeja del sistema y seleccione Cambiar a contenedores de Windows.
Vaya a la carpeta de Dockerfile en dotnet-docker/samples/aspnetapp.
Ejecute los siguientes comandos para compilar y ejecutar el ejemplo en Docker:
docker build -t aspnetapp . docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
Los argumentos del comando
build
:- Asigne a la imagen el nombre aspnetapp.
- Busque el archivo Dockerfile en la carpeta actual (el punto al final).
Los argumentos del comando de ejecución:
- Asigne un pseudo-TTY y manténgalo abierto aunque no esté asociado. (El mismo efecto que
--interactive --tty
). - Quite automáticamente el contenedor cuando se cierre.
- Asigne
<port>
al puerto 8080 de la máquina local en el contenedor. - Asigne al contenedor el nombre aspnetcore_sample.
- Especifique la imagen aspnetapp.
Vaya a
http://localhost:<port>
en un explorador para probar la aplicación.
Compilaciones e implementaciones manuales
En algunos escenarios, puede que quiera implementar una aplicación en un contenedor mediante la copia de los recursos que son necesarios en tiempo de ejecución. En esta sección se muestra cómo realizar una implementación manual.
Vaya a la carpeta de proyecto en dotnet-docker/samples/aspnetapp/aspnetapp.
Ejecute el comando dotnet publish:
dotnet publish -c Release -o published
Los argumentos del comando:
- Compile la aplicación en modo de versión (el valor predeterminado es modo de depuración).
- Cree los recursos en la carpeta publicada.
Ejecute la aplicación.
Windows:
dotnet published\aspnetapp.dll
Linux:
dotnet published/aspnetapp.dll
Ve a
http://localhost:<port>
para ver la página home.
Para utilizar la aplicación publicada manualmente dentro de un contenedor de Docker, cree un nuevo Dockerfile y use el comando docker build .
para crear una imagen.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Para ver la nueva imagen,use el comando docker images
.
El archivo Dockerfile
Aquí el archivo Dockerfile se usa con el comando docker build
que ejecutó anteriormente. Se usa dotnet publish
de la misma manera que en esta sección para realizar compilaciones e implementaciones.
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
En el archivo Dockerfile anterior, los archivos *.csproj
se copian y se restauran como capas distintas. Cuando el comando docker build
compila una imagen, usa una caché integrada. Si los archivos *.csproj
no han cambiado desde la última vez que se ejecutó el comando docker build
, no es necesario volver a ejecutar el comando dotnet restore
. En su lugar, se vuelve a usar la caché integrada para la capa dotnet restore
correspondiente. Para obtener más información, vea Procedimientos recomendados para escribir archivos Dockerfile.
Recursos adicionales
- Inclusión de una aplicación .NET en un contenedor mediante dotnet publish
- Comando de compilación de Docker
- Comando de ejecución de Docker
- Ejemplo de Docker de ASP.NET Core (el usado en este tutorial).
- Configurar ASP.NET Core para trabajar con servidores proxy y equilibradores de carga
- Working with Visual Studio Docker Tools (Trabajo con Visual Studio Docker Tools)
- Depuración con Visual Studio Code
- GC mediante Docker y contenedores pequeños
- System.IO.IOException: se ha alcanzado el límite de usuarios configurados (128) en el número de instancias de inotify
- Actualizaciones de imágenes de Docker
Pasos siguientes
El repositorio de Git que contiene la aplicación de ejemplo también incluye documentación. Para información general de los recursos disponibles en el repositorio, consulte el archivo Léame. En concreto, vea cómo implementar HTTPS:
Developing ASP.NET Core Applications with Docker over HTTPS (Desarrollo de aplicaciones ASP.NET Core con Docker a través de HTTPS)
Imágenes de Docker para ASP.NET Core
En este tutorial, descargará una aplicación de ejemplo de ASP.NET Core y la ejecutará en contenedores de Docker. El ejemplo funciona con contenedores de Linux y Windows.
El Dockerfile de ejemplo usa la característica de compilación en varias fases de Docker para la compilación y ejecución en distintos contenedores. Los contenedores de compilación y ejecución se crean a partir de imágenes que proporciona Microsoft en Docker Hub:
dotnet/sdk
En el ejemplo se usa esta imagen para compilar la aplicación. La imagen contiene el SDK de .NET, que incluye las herramientas de la línea de comandos (CLI). Esta imagen está optimizada para el desarrollo local, la depuración y las pruebas unitarias. Las herramientas instaladas para el desarrollo y la compilación hacen que la imagen sea relativamente grande.
dotnet/aspnet
En el ejemplo se usa esta imagen para ejecutar la aplicación. La imagen contiene el entorno de ejecución y las bibliotecas de ASP.NET Core y está optimizada para la ejecución de aplicaciones en producción. Diseñada para acelerar la implementación y el inicio de las aplicaciones, la imagen es relativamente pequeña, de forma que se optimiza el rendimiento de la red desde Docker Registry hasta el host de Docker. Solo se copian en el contenedor los archivos binarios y el contenido necesario para ejecutar una aplicación. El contenido está listo para ejecutarse, lo que permite el tiempo más rápido desde
docker run
hasta el inicio de la aplicación. En el modelo de Docker no se necesita compilación de código dinámico.
Requisitos previos
Cliente de Docker 18.03 o posterior
Descarga de la aplicación de ejemplo
Para descargar el ejemplo, clone el repositorio de Docker de .NET:
git clone https://github.com/dotnet/dotnet-docker
Probar la aplicación localmente
Vaya a la carpeta de proyecto en dotnet-docker/samples/aspnetapp/aspnetapp.
Ejecute el siguiente comando para compilar y ejecutar localmente la aplicación:
dotnet run
Vaya a
http://localhost:5000
en un explorador para probar la aplicación.Presione Ctrl+C en el símbolo del sistema para detener la aplicación.
Ejecución en un contenedor de Linux o en un contenedor de Windows
Para ejecutarse en un contenedor de Linux, haga clic con el botón derecho en el icono cliente de Docker de la bandeja del sistema y seleccione Cambiar a contenedores de Linux.
Para ejecutarse en un contenedor de Windows, haga clic con el botón derecho en el icono cliente de Docker de la bandeja del sistema y seleccione Cambiar a contenedores de Windows.
Vaya a la carpeta de Dockerfile en dotnet-docker/samples/aspnetapp.
Ejecute los siguientes comandos para compilar y ejecutar el ejemplo en Docker:
docker build -t aspnetapp . docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
Los argumentos del comando
build
:- Asigne a la imagen el nombre aspnetapp.
- Busque el archivo Dockerfile en la carpeta actual (el punto al final).
Los argumentos del comando de ejecución:
- Asigne un pseudo-TTY y manténgalo abierto aunque no esté asociado. (El mismo efecto que
--interactive --tty
). - Quite automáticamente el contenedor cuando se cierre.
- Asigne al puerto 5000 de la máquina local el puerto 80 en el contenedor.
- Asigne al contenedor el nombre aspnetcore_sample.
- Especifique la imagen aspnetapp.
Vaya a
http://localhost:5000
en un explorador para probar la aplicación.
Compilaciones e implementaciones manuales
En algunos escenarios, puede que quiera implementar una aplicación en un contenedor mediante la copia de los recursos que son necesarios en tiempo de ejecución. En esta sección se muestra cómo realizar una implementación manual.
Vaya a la carpeta de proyecto en dotnet-docker/samples/aspnetapp/aspnetapp.
Ejecute el comando dotnet publish:
dotnet publish -c Release -o published
Los argumentos del comando:
- Compile la aplicación en modo de versión (el valor predeterminado es modo de depuración).
- Cree los recursos en la carpeta publicada.
Ejecute la aplicación.
Windows:
dotnet published\aspnetapp.dll
Linux:
dotnet published/aspnetapp.dll
Ve a
http://localhost:5000
para ver la página home.
Para utilizar la aplicación publicada manualmente dentro de un contenedor de Docker, cree un nuevo Dockerfile y use el comando docker build .
para crear una imagen.
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Para ver la nueva imagen,use el comando docker images
.
El archivo Dockerfile
Aquí el archivo Dockerfile se usa con el comando docker build
que ejecutó anteriormente. Se usa dotnet publish
de la misma manera que en esta sección para realizar compilaciones e implementaciones.
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
En el archivo Dockerfile anterior, los archivos *.csproj
se copian y se restauran como capas distintas. Cuando el comando docker build
compila una imagen, usa una caché integrada. Si los archivos *.csproj
no han cambiado desde la última vez que se ejecutó el comando docker build
, no es necesario volver a ejecutar el comando dotnet restore
. En su lugar, se vuelve a usar la caché integrada para la capa dotnet restore
correspondiente. Para obtener más información, vea Procedimientos recomendados para escribir archivos Dockerfile.
Recursos adicionales
- Inclusión de una aplicación .NET en un contenedor mediante dotnet publish
- Comando de compilación de Docker
- Comando de ejecución de Docker
- Ejemplo de Docker de ASP.NET Core (el usado en este tutorial).
- Configurar ASP.NET Core para trabajar con servidores proxy y equilibradores de carga
- Working with Visual Studio Docker Tools (Trabajo con Visual Studio Docker Tools)
- Depuración con Visual Studio Code
- GC mediante Docker y contenedores pequeños
- System.IO.IOException: se ha alcanzado el límite de usuarios configurados (128) en el número de instancias de inotify
- Actualizaciones de imágenes de Docker
Pasos siguientes
El repositorio de Git que contiene la aplicación de ejemplo también incluye documentación. Para información general de los recursos disponibles en el repositorio, consulte el archivo Léame. En concreto, vea cómo implementar HTTPS:
Developing ASP.NET Core Applications with Docker over HTTPS (Desarrollo de aplicaciones ASP.NET Core con Docker a través de HTTPS)
Imágenes de Docker para ASP.NET Core
En este tutorial, descargará una aplicación de ejemplo de ASP.NET Core y la ejecutará en contenedores de Docker. El ejemplo funciona con contenedores de Linux y Windows.
El Dockerfile de ejemplo usa la característica de compilación en varias fases de Docker para la compilación y ejecución en distintos contenedores. Los contenedores de compilación y ejecución se crean a partir de imágenes que proporciona Microsoft en Docker Hub:
dotnet/sdk
En el ejemplo se usa esta imagen para compilar la aplicación. La imagen contiene el SDK de .NET, que incluye las herramientas de la línea de comandos (CLI). Esta imagen está optimizada para el desarrollo local, la depuración y las pruebas unitarias. Las herramientas instaladas para el desarrollo y la compilación hacen que la imagen sea relativamente grande.
dotnet/core/sdk
En el ejemplo se usa esta imagen para compilar la aplicación. La imagen contiene el SDK de .NET Core, que incluye las herramientas de línea de comandos (CLI). Esta imagen está optimizada para el desarrollo local, la depuración y las pruebas unitarias. Las herramientas instaladas para el desarrollo y la compilación hacen que la imagen sea relativamente grande.
dotnet/aspnet
En el ejemplo se usa esta imagen para ejecutar la aplicación. La imagen contiene el entorno de ejecución y las bibliotecas de ASP.NET Core y está optimizada para la ejecución de aplicaciones en producción. Diseñada para acelerar la implementación y el inicio de las aplicaciones, la imagen es relativamente pequeña, de forma que se optimiza el rendimiento de la red desde Docker Registry hasta el host de Docker. Solo se copian en el contenedor los archivos binarios y el contenido necesario para ejecutar una aplicación. El contenido está listo para ejecutarse, lo que permite el tiempo más rápido desde
docker run
hasta el inicio de la aplicación. En el modelo de Docker no se necesita compilación de código dinámico.
dotnet/core/aspnet
En el ejemplo se usa esta imagen para ejecutar la aplicación. La imagen contiene el entorno de ejecución y las bibliotecas de ASP.NET Core y está optimizada para la ejecución de aplicaciones en producción. Diseñada para acelerar la implementación y el inicio de las aplicaciones, la imagen es relativamente pequeña, de forma que se optimiza el rendimiento de la red desde Docker Registry hasta el host de Docker. Solo se copian en el contenedor los archivos binarios y el contenido necesario para ejecutar una aplicación. El contenido está listo para ejecutarse, lo que permite el tiempo más rápido desde
docker run
hasta el inicio de la aplicación. En el modelo de Docker no se necesita compilación de código dinámico.
Requisitos previos
Descarga de la aplicación de ejemplo
Para descargar el ejemplo, clone el repositorio de Docker de .NET:
git clone https://github.com/dotnet/dotnet-docker
Probar la aplicación localmente
Vaya a la carpeta de proyecto en dotnet-docker/samples/aspnetapp/aspnetapp.
Ejecute el siguiente comando para compilar y ejecutar localmente la aplicación:
dotnet run
Vaya a
http://localhost:5000
en un explorador para probar la aplicación.Presione Ctrl+C en el símbolo del sistema para detener la aplicación.
Ejecución en un contenedor de Linux o en un contenedor de Windows
Para ejecutarse en un contenedor de Linux, haga clic con el botón derecho en el icono cliente de Docker de la bandeja del sistema y seleccione Cambiar a contenedores de Linux.
Para ejecutarse en un contenedor de Windows, haga clic con el botón derecho en el icono cliente de Docker de la bandeja del sistema y seleccione Cambiar a contenedores de Windows.
Vaya a la carpeta de Dockerfile en dotnet-docker/samples/aspnetapp.
Ejecute los siguientes comandos para compilar y ejecutar el ejemplo en Docker:
docker build -t aspnetapp . docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
Los argumentos del comando
build
:- Asigne a la imagen el nombre aspnetapp.
- Busque el archivo Dockerfile en la carpeta actual (el punto al final).
Los argumentos del comando de ejecución:
- Asigne un pseudo-TTY y manténgalo abierto aunque no esté asociado. (El mismo efecto que
--interactive --tty
). - Quite automáticamente el contenedor cuando se cierre.
- Asigne al puerto 5000 de la máquina local el puerto 80 en el contenedor.
- Asigne al contenedor el nombre aspnetcore_sample.
- Especifique la imagen aspnetapp.
Vaya a
http://localhost:5000
en un explorador para probar la aplicación.
Compilaciones e implementaciones manuales
En algunos escenarios, puede que quiera implementar una aplicación en un contenedor mediante la copia de los recursos que son necesarios en tiempo de ejecución. En esta sección se muestra cómo realizar una implementación manual.
Vaya a la carpeta de proyecto en dotnet-docker/samples/aspnetapp/aspnetapp.
Ejecute el comando dotnet publish:
dotnet publish -c Release -o published
Los argumentos del comando:
- Compile la aplicación en modo de versión (el valor predeterminado es modo de depuración).
- Cree los recursos en la carpeta publicada.
Ejecute la aplicación.
Windows:
dotnet published\aspnetapp.dll
Linux:
dotnet published/aspnetapp.dll
Ve a
http://localhost:5000
para ver la página home.
Para utilizar la aplicación publicada manualmente dentro de un contenedor de Docker, cree un nuevo Dockerfile y use el comando docker build .
para crear una imagen.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Para ver la nueva imagen,use el comando docker images
.
El archivo Dockerfile
Aquí el archivo Dockerfile se usa con el comando docker build
que ejecutó anteriormente. Se usa dotnet publish
de la misma manera que en esta sección para realizar compilaciones e implementaciones.
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Para ver la nueva imagen,use el comando docker images
.
El archivo Dockerfile
Aquí el archivo Dockerfile se usa con el comando docker build
que ejecutó anteriormente. Se usa dotnet publish
de la misma manera que en esta sección para realizar compilaciones e implementaciones.
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
En el archivo Dockerfile anterior, los archivos *.csproj
se copian y se restauran como capas distintas. Cuando el comando docker build
compila una imagen, usa una caché integrada. Si los archivos *.csproj
no han cambiado desde la última vez que se ejecutó el comando docker build
, no es necesario volver a ejecutar el comando dotnet restore
. En su lugar, se vuelve a usar la caché integrada para la capa dotnet restore
correspondiente. Para obtener más información, vea Procedimientos recomendados para escribir archivos Dockerfile.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
El archivo Dockerfile
Aquí el archivo Dockerfile se usa con el comando docker build
que ejecutó anteriormente. Se usa dotnet publish
de la misma manera que en esta sección para realizar compilaciones e implementaciones.
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Como se indicó en el archivo Dockerfile anterior, los archivos *.csproj
se copian y se restauran como capas distintas. Cuando el comando docker build
compila una imagen, usa una caché integrada. Si los archivos *.csproj
no han cambiado desde la última vez que se ejecutó el comando docker build
, no es necesario volver a ejecutar el comando dotnet restore
. En su lugar, se vuelve a usar la caché integrada para la capa dotnet restore
correspondiente. Para obtener más información, vea Procedimientos recomendados para escribir archivos Dockerfile.
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
El archivo Dockerfile
Aquí el archivo Dockerfile se usa con el comando docker build
que ejecutó anteriormente. Se usa dotnet publish
de la misma manera que en esta sección para realizar compilaciones e implementaciones.
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
En el archivo Dockerfile anterior, los archivos *.csproj
se copian y se restauran como capas distintas. Cuando el comando docker build
compila una imagen, usa una caché integrada. Si los archivos *.csproj
no han cambiado desde la última vez que se ejecutó el comando docker build
, no es necesario volver a ejecutar el comando dotnet restore
. En su lugar, se vuelve a usar la caché integrada para la capa dotnet restore
correspondiente. Para obtener más información, vea Procedimientos recomendados para escribir archivos Dockerfile.
Recursos adicionales
- Inclusión de una aplicación .NET en un contenedor mediante dotnet publish
- Comando de compilación de Docker
- Comando de ejecución de Docker
- Ejemplo de Docker de ASP.NET Core (el usado en este tutorial).
- Configurar ASP.NET Core para trabajar con servidores proxy y equilibradores de carga
- Working with Visual Studio Docker Tools (Trabajo con Visual Studio Docker Tools)
- Depuración con Visual Studio Code
- GC mediante Docker y contenedores pequeños
- System.IO.IOException: se ha alcanzado el límite de usuarios configurados (128) en el número de instancias de inotify
Pasos siguientes
El repositorio de Git que contiene la aplicación de ejemplo también incluye documentación. Para información general de los recursos disponibles en el repositorio, consulte el archivo Léame. En concreto, vea cómo implementar HTTPS:
Developing ASP.NET Core Applications with Docker over HTTPS (Desarrollo de aplicaciones ASP.NET Core con Docker a través de HTTPS)