Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 10 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.
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/sdkO 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/aspnetO 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 runaté à inicialização da aplicação. A compilação de código dinâmico não é necessária no modelo do Docker.
Pré-requisitos
Cliente Docker 18.03 ou posterior
Descarregar a aplicação de exemplo
Baixe o exemplo clonando o repositório .NET Docker:
git clone https://github.com/dotnet/dotnet-docker
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 runVá 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 aspnetappOs
buildargumentos 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 publishedOs 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.dllLinux:
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
- Containerize um aplicativo .NET com dotnet publish
- Comando de compilação do Docker
- Comando de execução do Docker
- ASP.NET Core exemplo do Docker (O exemplo utilizado neste tutorial.)
- Configurar o ASP.NET Core para trabalhar com servidores proxy e balanceadores de carga
- Trabalhando com o Visual Studio Docker Tools
- Depuração com código do Visual Studio
- GC usando Docker e pequenos contêineres
- System.IO.IOException: O limite de usuário configurado (128) no número de instâncias inotify foi atingido
- Atualizações de imagens do Docker
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/sdkO 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/aspnetO 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 runaté à inicialização da aplicação. A compilação de código dinâmico não é necessária no modelo do Docker.
Pré-requisitos
Cliente Docker 18.03 ou posterior
Descarregar a aplicação de exemplo
Baixe o exemplo clonando o repositório .NET Docker:
git clone https://github.com/dotnet/dotnet-docker
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 runVá 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 aspnetappOs
buildargumentos 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 publishedOs 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.dllLinux:
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
- Containerize um aplicativo .NET com dotnet publish
- Comando de compilação do Docker
- Comando de execução do Docker
- ASP.NET Core exemplo do Docker (O exemplo utilizado neste tutorial.)
- Configurar o ASP.NET Core para trabalhar com servidores proxy e balanceadores de carga
- Trabalhando com o Visual Studio Docker Tools
- Depuração com código do Visual Studio
- GC usando Docker e pequenos contêineres
- System.IO.IOException: O limite de usuário configurado (128) no número de instâncias inotify foi atingido
- Atualizações de imagens do Docker
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/sdkO 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/aspnetO 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 runaté à inicialização da aplicação. A compilação de código dinâmico não é necessária no modelo do Docker.
Pré-requisitos
Cliente Docker 18.03 ou posterior
Descarregar a aplicação de exemplo
Baixe o exemplo clonando o repositório .NET Docker:
git clone https://github.com/dotnet/dotnet-docker
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 runVá 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 aspnetappOs
buildargumentos 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 publishedOs 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.dllLinux:
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
- Containerize um aplicativo .NET com dotnet publish
- Comando de compilação do Docker
- Comando de execução do Docker
- ASP.NET Core exemplo do Docker (O exemplo utilizado neste tutorial.)
- Configurar o ASP.NET Core para trabalhar com servidores proxy e balanceadores de carga
- Trabalhando com o Visual Studio Docker Tools
- Depuração com código do Visual Studio
- GC usando Docker e pequenos contêineres
- System.IO.IOException: O limite de usuário configurado (128) no número de instâncias inotify foi atingido
- Atualizações de imagens do Docker
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/sdkO 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/aspnetO 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 runaté à inicialização da aplicação. A compilação de código dinâmico não é necessária no modelo do Docker.
Pré-requisitos
Cliente Docker 18.03 ou posterior
Descarregar a aplicação de exemplo
Baixe o exemplo clonando o repositório .NET Docker:
git clone https://github.com/dotnet/dotnet-docker
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 runVá para
http://localhost:5000em 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 aspnetappOs
buildargumentos 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:5000em 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 publishedOs 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.dllLinux:
dotnet published/aspnetapp.dll
Navegue para
http://localhost:5000para 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
- Containerize um aplicativo .NET com dotnet publish
- Comando de compilação do Docker
- Comando de execução do Docker
- ASP.NET Core exemplo do Docker (O exemplo utilizado neste tutorial.)
- Configurar o ASP.NET Core para trabalhar com servidores proxy e balanceadores de carga
- Trabalhando com o Visual Studio Docker Tools
- Depuração com código do Visual Studio
- GC usando Docker e pequenos contêineres
- System.IO.IOException: O limite de usuário configurado (128) no número de instâncias inotify foi atingido
- Atualizações de imagens do Docker
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/sdkO 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/sdkO 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/aspnetO 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 runaté à inicialização da aplicação. A compilação de código dinâmico não é necessária no modelo do Docker.
dotnet/core/aspnetO 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 runaté à 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
Baixe o exemplo clonando o repositório .NET Docker:
git clone https://github.com/dotnet/dotnet-docker
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 runVá para
http://localhost:5000em 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 aspnetappOs
buildargumentos 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:5000em 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 publishedOs 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.dllLinux:
dotnet published/aspnetapp.dll
Navegue para
http://localhost:5000para 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
- Containerize um aplicativo .NET com dotnet publish
- Comando de compilação do Docker
- Comando de execução do Docker
- ASP.NET Core exemplo do Docker (O exemplo utilizado neste tutorial.)
- Configurar o ASP.NET Core para trabalhar com servidores proxy e balanceadores de carga
- Trabalhando com o Visual Studio Docker Tools
- Depuração com código do Visual Studio
- GC usando Docker e pequenos contêineres
- System.IO.IOException: O limite de usuário configurado (128) no número de instâncias inotify foi atingido
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: