Partilhar via


Executar um aplicativo ASP.NET Core em contêineres do Docker

Observação

Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 9 deste artigo.

Advertência

Esta versão do ASP.NET Core não é mais suportada. Para obter mais informações, consulte a Política de suporte do .NET e do .NET Core. Para a versão atual, consulte a versão .NET 9 deste artigo.

Importante

Estas informações referem-se a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui.

Para a versão atual, consulte a versão .NET 9 deste artigo.

Este artigo mostra como executar um aplicativo ASP.NET Core em contêineres do Docker.

O Windows Home Edition não suporta Hyper-V e Hyper-V é necessário para o Docker.

Consulte Containerize a .NET app with dotnet publish para obter informações sobre como colocar em contêiner um aplicativo .NET com dotnet publish.

ASP.NET imagens principais do Docker

Para este tutorial, baixe um aplicativo de exemplo do ASP.NET Core e execute-o em contêineres do Docker. O exemplo funciona com contêineres Linux e Windows.

O Dockerfile de exemplo usa o recurso de compilação de vários estágios do Docker para criar e executar em contêineres diferentes. Os contêineres de compilação e execução são criados a partir de imagens fornecidas no Docker Hub pela Microsoft:

  • dotnet/sdk

    O exemplo usa essa imagem para criar o aplicativo. A imagem contém o SDK do .NET, que inclui as ferramentas de linha de comando (CLI). A imagem está otimizada para o desenvolvimento local, a depuração e os testes unitários. As ferramentas instaladas para desenvolvimento e compilação tornam a imagem relativamente grande.

  • dotnet/aspnet

    O exemplo usa essa imagem para executar o aplicativo. A imagem contém o tempo de execução e as bibliotecas do ASP.NET Core e é otimizada para executar aplicativos em produção. Projetada para velocidade de implantação e inicialização do aplicativo, a imagem é relativamente pequena, portanto, o desempenho da rede do Registro do Docker para o host do Docker é otimizado. Somente os binários e o conteúdo necessários para executar um aplicativo são copiados para o contêiner. Os conteúdos estão prontos para serem executados, permitindo o tempo mais rápido desde docker run até à inicialização da aplicação. A compilação de código dinâmico não é necessária no modelo do Docker.

Pré-requisitos

Descarregar a aplicação de exemplo

Executar a aplicação localmente

  • Navegue até a pasta do projeto em dotnet-docker/samples/aspnetapp/aspnetapp.

  • Execute o seguinte comando para criar e executar o aplicativo localmente:

    dotnet run
    
  • Vá para http://localhost:<port> em um navegador para testar o aplicativo.

  • Pressione Ctrl+C no prompt de comando para parar o aplicativo.

Executar em um contêiner Linux ou Windows

  • Para executar em um contêiner Linux, clique com o botão direito do mouse no ícone do cliente Docker da bandeja do sistema e selecione alternar para contêineres Linux.

  • Para executar em um contêiner do Windows, clique com o botão direito do mouse no ícone do cliente Docker da Bandeja do Sistema e selecione alternar para contêineres do Windows.

  • Navegue até a pasta Dockerfile em dotnet-docker/samples/aspnetapp.

  • Execute os seguintes comandos para criar e executar o exemplo no Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Os build argumentos do comando:

    • Nomeie a imagem aspnetapp.
    • Procure o Dockerfile na pasta atual (o ponto no final).

    Os argumentos do comando executar:

    • Aloque um pseudo-TTY e mantenha-o aberto mesmo que não esteja anexado. (O mesmo efeito que --interactive --tty.)
    • Remova automaticamente o recipiente quando ele sair.
    • Mapeie <port> na máquina local para a porta 8080 no contêiner.
    • Nomeie o contêiner aspnetcore_sample.
    • Especifique a imagem aspnetapp.
  • Vá para http://localhost:<port> em um navegador para testar o aplicativo.

Criar e implantar manualmente

Em alguns cenários, talvez você queira implantar um aplicativo em um contêiner copiando seus ativos necessários em tempo de execução. Esta seção mostra como implantar manualmente.

  • Navegue até a pasta do projeto em dotnet-docker/samples/aspnetapp/aspnetapp.

  • Execute o comando dotnet publishing :

    dotnet publish -c Release -o published
    

    Os argumentos do comando:

    • Crie o aplicativo no modo de lançamento (o padrão é o modo de depuração).
    • Crie os ativos na pasta publicada .
  • Execute o aplicativo.

    • Windows

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Navegue para http://localhost:<port> para ver a página inicial.

Para usar o aplicativo publicado manualmente em um contêiner do Docker, crie um novo Dockerfile e use o docker build . comando para criar uma imagem.

FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Para ver a nova imagem, use o docker images comando.

O Dockerfile

Aqui está o Dockerfile usado pelo docker build comando que você executou anteriormente. Ele usa dotnet publish da mesma forma que você fez nesta seção para criar e implantar.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:10.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:10.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

No Dockerfile anterior, os *.csproj arquivos são copiados e restaurados como camadas distintas. Quando o docker build comando cria uma imagem, ele usa um cache interno. Se os *.csproj arquivos não foram alterados desde a última execução do docker build comando, o dotnet restore comando não precisará ser executado novamente. Em vez disso, o cache interno para a camada correspondente dotnet restore é reutilizado. Para obter mais informações, consulte Práticas recomendadas para escrever Dockerfiles.

Recursos adicionais

Próximos passos

O repositório Git que contém o aplicativo de exemplo também inclui documentação. Para obter uma visão geral dos recursos disponíveis no repositório, consulte o arquivo LEIA-ME. Em particular, saiba como implementar HTTPS:

ASP.NET imagens principais do Docker

Para este tutorial, baixe um aplicativo de exemplo do ASP.NET Core e execute-o em contêineres do Docker. O exemplo funciona com contêineres Linux e Windows.

O Dockerfile de exemplo usa o recurso de compilação de vários estágios do Docker para criar e executar em contêineres diferentes. Os contêineres de compilação e execução são criados a partir de imagens fornecidas no Docker Hub pela Microsoft:

  • dotnet/sdk

    O exemplo usa essa imagem para criar o aplicativo. A imagem contém o SDK do .NET, que inclui as ferramentas de linha de comando (CLI). A imagem está otimizada para o desenvolvimento local, a depuração e os testes unitários. As ferramentas instaladas para desenvolvimento e compilação tornam a imagem relativamente grande.

  • dotnet/aspnet

    O exemplo usa essa imagem para executar o aplicativo. A imagem contém o tempo de execução e as bibliotecas do ASP.NET Core e é otimizada para executar aplicativos em produção. Projetada para velocidade de implantação e inicialização do aplicativo, a imagem é relativamente pequena, portanto, o desempenho da rede do Registro do Docker para o host do Docker é otimizado. Somente os binários e o conteúdo necessários para executar um aplicativo são copiados para o contêiner. Os conteúdos estão prontos para serem executados, permitindo o tempo mais rápido desde docker run até à inicialização da aplicação. A compilação de código dinâmico não é necessária no modelo do Docker.

Pré-requisitos

Descarregar a aplicação de exemplo

Executar a aplicação localmente

  • Navegue até a pasta do projeto em dotnet-docker/samples/aspnetapp/aspnetapp.

  • Execute o seguinte comando para criar e executar o aplicativo localmente:

    dotnet run
    
  • Vá para http://localhost:<port> em um navegador para testar o aplicativo.

  • Pressione Ctrl+C no prompt de comando para parar o aplicativo.

Executar em um contêiner Linux ou Windows

  • Para executar em um contêiner Linux, clique com o botão direito do mouse no ícone do cliente Docker da bandeja do sistema e selecione alternar para contêineres Linux.

  • Para executar em um contêiner do Windows, clique com o botão direito do mouse no ícone do cliente Docker da Bandeja do Sistema e selecione alternar para contêineres do Windows.

  • Navegue até a pasta Dockerfile em dotnet-docker/samples/aspnetapp.

  • Execute os seguintes comandos para criar e executar o exemplo no Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Os build argumentos do comando:

    • Nomeie a imagem aspnetapp.
    • Procure o Dockerfile na pasta atual (o ponto no final).

    Os argumentos do comando executar:

    • Aloque um pseudo-TTY e mantenha-o aberto mesmo que não esteja anexado. (O mesmo efeito que --interactive --tty.)
    • Remova automaticamente o recipiente quando ele sair.
    • Mapeie <port> na máquina local para a porta 8080 no contêiner.
    • Nomeie o contêiner aspnetcore_sample.
    • Especifique a imagem aspnetapp.
  • Vá para http://localhost:<port> em um navegador para testar o aplicativo.

Criar e implantar manualmente

Em alguns cenários, talvez você queira implantar um aplicativo em um contêiner copiando seus ativos necessários em tempo de execução. Esta seção mostra como implantar manualmente.

  • Navegue até a pasta do projeto em dotnet-docker/samples/aspnetapp/aspnetapp.

  • Execute o comando dotnet publishing :

    dotnet publish -c Release -o published
    

    Os argumentos do comando:

    • Crie o aplicativo no modo de lançamento (o padrão é o modo de depuração).
    • Crie os ativos na pasta publicada .
  • Execute o aplicativo.

    • Windows

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Navegue para http://localhost:<port> para ver a página inicial.

Para usar o aplicativo publicado manualmente em um contêiner do Docker, crie um novo Dockerfile e use o docker build . comando para criar uma imagem.

FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Para ver a nova imagem, use o docker images comando.

O Dockerfile

Aqui está o Dockerfile usado pelo docker build comando que você executou anteriormente. Ele usa dotnet publish da mesma forma que você fez nesta seção para criar e implantar.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:9.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:9.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

No Dockerfile anterior, os *.csproj arquivos são copiados e restaurados como camadas distintas. Quando o docker build comando cria uma imagem, ele usa um cache interno. Se os *.csproj arquivos não tiverem sido alterados desde a última execução do docker build comando, o dotnet restore comando não precisará ser executado novamente. Em vez disso, o cache interno para a camada correspondente dotnet restore é reutilizado. Para obter mais informações, consulte Práticas recomendadas para escrever Dockerfiles.

Recursos adicionais

Próximos passos

O repositório Git que contém o aplicativo de exemplo também inclui documentação. Para obter uma visão geral dos recursos disponíveis no repositório, consulte o arquivo LEIA-ME. Em particular, saiba como implementar HTTPS:

ASP.NET imagens principais do Docker

Para este tutorial, baixe um aplicativo de exemplo do ASP.NET Core e execute-o em contêineres do Docker. O exemplo funciona com contêineres Linux e Windows.

O Dockerfile de exemplo usa o recurso de compilação de vários estágios do Docker para criar e executar em contêineres diferentes. Os contêineres de compilação e execução são criados a partir de imagens fornecidas no Docker Hub pela Microsoft:

  • dotnet/sdk

    O exemplo usa essa imagem para criar o aplicativo. A imagem contém o SDK do .NET, que inclui as ferramentas de linha de comando (CLI). A imagem está otimizada para o desenvolvimento local, a depuração e os testes unitários. As ferramentas instaladas para desenvolvimento e compilação tornam a imagem relativamente grande.

  • dotnet/aspnet

    O exemplo usa essa imagem para executar o aplicativo. A imagem contém o tempo de execução e as bibliotecas do ASP.NET Core e é otimizada para executar aplicativos em produção. Projetada para velocidade de implantação e inicialização do aplicativo, a imagem é relativamente pequena, portanto, o desempenho da rede do Registro do Docker para o host do Docker é otimizado. Somente os binários e o conteúdo necessários para executar um aplicativo são copiados para o contêiner. Os conteúdos estão prontos para serem executados, permitindo o tempo mais rápido desde docker run até à inicialização da aplicação. A compilação de código dinâmico não é necessária no modelo do Docker.

Pré-requisitos

Descarregar a aplicação de exemplo

Executar a aplicação localmente

  • Navegue até a pasta do projeto em dotnet-docker/samples/aspnetapp/aspnetapp.

  • Execute o seguinte comando para criar e executar o aplicativo localmente:

    dotnet run
    
  • Vá para http://localhost:<port> em um navegador para testar o aplicativo.

  • Pressione Ctrl+C no prompt de comando para parar o aplicativo.

Executar em um contêiner Linux ou Windows

  • Para executar em um contêiner Linux, clique com o botão direito do mouse no ícone do cliente Docker da bandeja do sistema e selecione alternar para contêineres Linux.

  • Para executar em um contêiner do Windows, clique com o botão direito do mouse no ícone do cliente Docker da Bandeja do Sistema e selecione alternar para contêineres do Windows.

  • Navegue até a pasta Dockerfile em dotnet-docker/samples/aspnetapp.

  • Execute os seguintes comandos para criar e executar o exemplo no Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Os build argumentos do comando:

    • Nomeie a imagem aspnetapp.
    • Procure o Dockerfile na pasta atual (o ponto no final).

    Os argumentos do comando executar:

    • Aloque um pseudo-TTY e mantenha-o aberto mesmo que não esteja anexado. (O mesmo efeito que --interactive --tty.)
    • Remova automaticamente o recipiente quando ele sair.
    • Mapeie <port> na máquina local para a porta 8080 no contêiner.
    • Nomeie o contêiner aspnetcore_sample.
    • Especifique a imagem aspnetapp.
  • Vá para http://localhost:<port> em um navegador para testar o aplicativo.

Criar e implantar manualmente

Em alguns cenários, talvez você queira implantar um aplicativo em um contêiner copiando seus ativos necessários em tempo de execução. Esta seção mostra como implantar manualmente.

  • Navegue até a pasta do projeto em dotnet-docker/samples/aspnetapp/aspnetapp.

  • Execute o comando dotnet publishing :

    dotnet publish -c Release -o published
    

    Os argumentos do comando:

    • Crie o aplicativo no modo de lançamento (o padrão é o modo de depuração).
    • Crie os ativos na pasta publicada .
  • Execute o aplicativo.

    • Windows

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Navegue para http://localhost:<port> para ver a página inicial.

Para usar o aplicativo publicado manualmente em um contêiner do Docker, crie um novo Dockerfile e use o docker build . comando para criar uma imagem.

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Para ver a nova imagem, use o docker images comando.

O Dockerfile

Aqui está o Dockerfile usado pelo docker build comando que você executou anteriormente. Ele usa dotnet publish da mesma forma que você fez nesta seção para criar e implantar.

# 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"]

No Dockerfile anterior, os *.csproj arquivos são copiados e restaurados como camadas distintas. Quando o docker build comando cria uma imagem, ele usa um cache interno. Se os *.csproj arquivos não tiverem sido alterados desde a última execução do docker build comando, o dotnet restore comando não precisará ser executado novamente. Em vez disso, o cache interno para a camada correspondente dotnet restore é reutilizado. Para obter mais informações, consulte Práticas recomendadas para escrever Dockerfiles.

Recursos adicionais

Próximos passos

O repositório Git que contém o aplicativo de exemplo também inclui documentação. Para obter uma visão geral dos recursos disponíveis no repositório, consulte o arquivo LEIA-ME. Em particular, saiba como implementar HTTPS:

ASP.NET imagens principais do Docker

Para este tutorial, baixe um aplicativo de exemplo do ASP.NET Core e execute-o em contêineres do Docker. O exemplo funciona com contêineres Linux e Windows.

O Dockerfile de exemplo usa o recurso de compilação de vários estágios do Docker para criar e executar em contêineres diferentes. Os contêineres de compilação e execução são criados a partir de imagens fornecidas no Docker Hub pela Microsoft:

  • dotnet/sdk

    O exemplo usa essa imagem para criar o aplicativo. A imagem contém o SDK do .NET, que inclui as ferramentas de linha de comando (CLI). A imagem está otimizada para o desenvolvimento local, a depuração e os testes unitários. As ferramentas instaladas para desenvolvimento e compilação tornam a imagem relativamente grande.

  • dotnet/aspnet

    O exemplo usa essa imagem para executar o aplicativo. A imagem contém o tempo de execução e as bibliotecas do ASP.NET Core e é otimizada para executar aplicativos em produção. Projetada para velocidade de implantação e inicialização do aplicativo, a imagem é relativamente pequena, portanto, o desempenho da rede do Registro do Docker para o host do Docker é otimizado. Somente os binários e o conteúdo necessários para executar um aplicativo são copiados para o contêiner. Os conteúdos estão prontos para serem executados, permitindo o tempo mais rápido desde docker run até à inicialização da aplicação. A compilação de código dinâmico não é necessária no modelo do Docker.

Pré-requisitos

Descarregar a aplicação de exemplo

Executar a aplicação localmente

  • Navegue até a pasta do projeto em dotnet-docker/samples/aspnetapp/aspnetapp.

  • Execute o seguinte comando para criar e executar o aplicativo localmente:

    dotnet run
    
  • Vá para http://localhost:5000 em um navegador para testar o aplicativo.

  • Pressione Ctrl+C no prompt de comando para parar o aplicativo.

Executar em um contêiner Linux ou Windows

  • Para executar em um contêiner Linux, clique com o botão direito do mouse no ícone do cliente Docker da bandeja do sistema e selecione alternar para contêineres Linux.

  • Para executar em um contêiner do Windows, clique com o botão direito do mouse no ícone do cliente Docker da Bandeja do Sistema e selecione alternar para contêineres do Windows.

  • Navegue até a pasta Dockerfile em dotnet-docker/samples/aspnetapp.

  • Execute os seguintes comandos para criar e executar o exemplo no Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
    

    Os build argumentos do comando:

    • Nomeie a imagem aspnetapp.
    • Procure o Dockerfile na pasta atual (o ponto no final).

    Os argumentos do comando executar:

    • Aloque um pseudo-TTY e mantenha-o aberto mesmo que não esteja anexado. (O mesmo efeito que --interactive --tty.)
    • Remova automaticamente o recipiente quando ele sair.
    • Mapeie a porta 5000 na máquina local para a porta 80 no contêiner.
    • Nomeie o contêiner aspnetcore_sample.
    • Especifique a imagem aspnetapp.
  • Vá para http://localhost:5000 em um navegador para testar o aplicativo.

Criar e implantar manualmente

Em alguns cenários, talvez você queira implantar um aplicativo em um contêiner copiando seus ativos necessários em tempo de execução. Esta seção mostra como implantar manualmente.

  • Navegue até a pasta do projeto em dotnet-docker/samples/aspnetapp/aspnetapp.

  • Execute o comando dotnet publishing :

    dotnet publish -c Release -o published
    

    Os argumentos do comando:

    • Crie o aplicativo no modo de lançamento (o padrão é o modo de depuração).
    • Crie os ativos na pasta publicada .
  • Execute o aplicativo.

    • Windows

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Navegue para http://localhost:5000 para ver a página inicial.

Para usar o aplicativo publicado manualmente em um contêiner do Docker, crie um novo Dockerfile e use o docker build . comando para criar uma imagem.

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Para ver a nova imagem, use o docker images comando.

O Dockerfile

Aqui está o Dockerfile usado pelo docker build comando que você executou anteriormente. Ele usa dotnet publish da mesma forma que você fez nesta seção para criar e implantar.

# 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"]

No Dockerfile anterior, os *.csproj arquivos são copiados e restaurados como camadas distintas. Quando o docker build comando cria uma imagem, ele usa um cache interno. Se os *.csproj arquivos não tiverem sido alterados desde a última execução do docker build comando, o dotnet restore comando não precisará ser executado novamente. Em vez disso, o cache interno para a camada correspondente dotnet restore é reutilizado. Para obter mais informações, consulte Práticas recomendadas para escrever Dockerfiles.

Recursos adicionais

Próximos passos

O repositório Git que contém o aplicativo de exemplo também inclui documentação. Para obter uma visão geral dos recursos disponíveis no repositório, consulte o arquivo LEIA-ME. Em particular, saiba como implementar HTTPS:

ASP.NET imagens principais do Docker

Para este tutorial, baixe um aplicativo de exemplo do ASP.NET Core e execute-o em contêineres do Docker. O exemplo funciona com contêineres Linux e Windows.

O Dockerfile de exemplo usa o recurso de compilação de vários estágios do Docker para criar e executar em contêineres diferentes. Os contêineres de compilação e execução são criados a partir de imagens fornecidas no Docker Hub pela Microsoft:

  • dotnet/sdk

    O exemplo usa essa imagem para criar o aplicativo. A imagem contém o SDK do .NET, que inclui as ferramentas de linha de comando (CLI). A imagem está otimizada para o desenvolvimento local, a depuração e os testes unitários. As ferramentas instaladas para desenvolvimento e compilação tornam a imagem relativamente grande.

  • dotnet/core/sdk

    O exemplo usa essa imagem para criar o aplicativo. A imagem contém o SDK do .NET Core, que inclui as Ferramentas de Linha de Comando (CLI). A imagem está otimizada para o desenvolvimento local, a depuração e os testes unitários. As ferramentas instaladas para desenvolvimento e compilação tornam a imagem relativamente grande.

  • dotnet/aspnet

    O exemplo usa essa imagem para executar o aplicativo. A imagem contém o tempo de execução e as bibliotecas do ASP.NET Core e é otimizada para executar aplicativos em produção. Projetada para velocidade de implantação e inicialização do aplicativo, a imagem é relativamente pequena, portanto, o desempenho da rede do Registro do Docker para o host do Docker é otimizado. Somente os binários e o conteúdo necessários para executar um aplicativo são copiados para o contêiner. Os conteúdos estão prontos para serem executados, permitindo o tempo mais rápido desde docker run até à inicialização da aplicação. A compilação de código dinâmico não é necessária no modelo do Docker.

  • dotnet/core/aspnet

    O exemplo usa essa imagem para executar o aplicativo. A imagem contém o tempo de execução e as bibliotecas do ASP.NET Core e é otimizada para executar aplicativos em produção. Projetada para velocidade de implantação e inicialização do aplicativo, a imagem é relativamente pequena, portanto, o desempenho da rede do Registro do Docker para o host do Docker é otimizado. Somente os binários e o conteúdo necessários para executar um aplicativo são copiados para o contêiner. Os conteúdos estão prontos para serem executados, permitindo o tempo mais rápido desde docker run até à inicialização da aplicação. A compilação de código dinâmico não é necessária no modelo do Docker.

Pré-requisitos

Descarregar a aplicação de exemplo

Executar a aplicação localmente

  • Navegue até a pasta do projeto em dotnet-docker/samples/aspnetapp/aspnetapp.

  • Execute o seguinte comando para criar e executar o aplicativo localmente:

    dotnet run
    
  • Vá para http://localhost:5000 em um navegador para testar o aplicativo.

  • Pressione Ctrl+C no prompt de comando para parar o aplicativo.

Executar em um contêiner Linux ou Windows

  • Para executar em um contêiner Linux, clique com o botão direito do mouse no ícone do cliente Docker da bandeja do sistema e selecione alternar para contêineres Linux.

  • Para executar em um contêiner do Windows, clique com o botão direito do mouse no ícone do cliente Docker da Bandeja do Sistema e selecione alternar para contêineres do Windows.

  • Navegue até a pasta Dockerfile em dotnet-docker/samples/aspnetapp.

  • Execute os seguintes comandos para criar e executar o exemplo no Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
    

    Os build argumentos do comando:

    • Nomeie a imagem aspnetapp.
    • Procure o Dockerfile na pasta atual (o ponto no final).

    Os argumentos do comando executar:

    • Aloque um pseudo-TTY e mantenha-o aberto mesmo que não esteja anexado. (O mesmo efeito que --interactive --tty.)
    • Remova automaticamente o recipiente quando ele sair.
    • Mapeie a porta 5000 na máquina local para a porta 80 no contêiner.
    • Nomeie o contêiner aspnetcore_sample.
    • Especifique a imagem aspnetapp.
  • Vá para http://localhost:5000 em um navegador para testar o aplicativo.

Criar e implantar manualmente

Em alguns cenários, talvez você queira implantar um aplicativo em um contêiner copiando seus ativos necessários em tempo de execução. Esta seção mostra como implantar manualmente.

  • Navegue até a pasta do projeto em dotnet-docker/samples/aspnetapp/aspnetapp.

  • Execute o comando dotnet publishing :

    dotnet publish -c Release -o published
    

    Os argumentos do comando:

    • Crie o aplicativo no modo de lançamento (o padrão é o modo de depuração).
    • Crie os ativos na pasta publicada .
  • Execute o aplicativo.

    • Windows

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Navegue para http://localhost:5000 para ver a página inicial.

Para usar o aplicativo publicado manualmente em um contêiner do Docker, crie um novo Dockerfile e use o docker build . comando para criar uma imagem.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Para ver a nova imagem, use o docker images comando.

O Dockerfile

Aqui está o Dockerfile usado pelo docker build comando que você executou anteriormente. Ele usa dotnet publish da mesma forma que você fez nesta seção para criar e implantar.

# 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 a nova imagem, use o docker images comando.

O Dockerfile

Aqui está o Dockerfile usado pelo docker build comando que você executou anteriormente. Ele usa dotnet publish da mesma forma que você fez nesta seção para criar e implantar.

# 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"]

No Dockerfile anterior, os *.csproj arquivos são copiados e restaurados como camadas distintas. Quando o docker build comando cria uma imagem, ele usa um cache interno. Se os *.csproj arquivos não tiverem sido alterados desde a última execução do docker build comando, o dotnet restore comando não precisará ser executado novamente. Em vez disso, o cache interno para a camada correspondente dotnet restore é reutilizado. Para obter mais informações, consulte Práticas recomendadas para escrever Dockerfiles.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

O Dockerfile

Aqui está o Dockerfile usado pelo docker build comando que você executou anteriormente. Ele usa dotnet publish da mesma forma que você fez nesta seção para criar e implantar.

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 observado no Dockerfile anterior, os *.csproj arquivos são copiados e restaurados como camadas distintas. Quando o docker build comando cria uma imagem, ele usa um cache interno. Se os *.csproj arquivos não tiverem sido alterados desde a última execução do docker build comando, o dotnet restore comando não precisará ser executado novamente. Em vez disso, o cache interno para a camada correspondente dotnet restore é reutilizado. Para obter mais informações, consulte Práticas recomendadas para escrever Dockerfiles.

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

O Dockerfile

Aqui está o Dockerfile usado pelo docker build comando que você executou anteriormente. Ele usa dotnet publish da mesma forma que você fez nesta seção para criar e implantar.

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"]

No Dockerfile anterior, os *.csproj arquivos são copiados e restaurados como camadas distintas. Quando o docker build comando cria uma imagem, ele usa um cache interno. Se os *.csproj arquivos não tiverem sido alterados desde a última execução do docker build comando, o dotnet restore comando não precisará ser executado novamente. Em vez disso, o cache interno para a camada correspondente dotnet restore é reutilizado. Para obter mais informações, consulte Práticas recomendadas para escrever Dockerfiles.

Recursos adicionais

Próximos passos

O repositório Git que contém o aplicativo de exemplo também inclui documentação. Para obter uma visão geral dos recursos disponíveis no repositório, consulte o arquivo LEIA-ME. Em particular, saiba como implementar HTTPS: