Tutorial do .NET – seu primeiro microsserviço
Intro
Finalidade
Familiarize-se com os componentes utilizados para criar microsserviços com o .NET.
Pré-requisitos
Nenhum.
macOS 12.0 ou versões posteriores.
Tempo até a conclusão:
15 minutos
Situação
Crie um serviço simples que retorna uma lista de valores e execute o serviço em um contêiner do Docker.
Instalar SDK do .NET
Para começar a criar aplicativos .NET, baixe e instale o SDK do .NET.
Download do SDK do .NET 8 x64 (Intel)
Download do SDK do .NET 8 Arm64 (Apple Silicon)
Se você estiver em um Mac com um chip Apple M1 ou M2, precisará instalar a versão Arm64 do SDK.
Verifique se tudo foi instalado corretamente
Depois de instalar, abra um novo prompt de comando e execute o seguinte comando:
Depois de instalar, abra um novo terminal e execute o seguinte comando:
dotnet --version
Se a instalação tiver sido bem-sucedida, você deverá ver a versão 8.0.100 ou superior sendo exibida:
8.0.100
Se tudo estiver certo, selecione o botão Continuar abaixo para ir para a próxima etapa.
Encontrou um erro?
Se você receber um erro 'dotnet' não é reconhecido como um comando interno ou externo, verifique se você abriu um novo prompt de comando. Se a reinicialização do computador não resolver o problema, use o botão Encontrei um problema para obter ajuda para corrigir o problema.
Criar seu serviço
Em seu prompt de comando, execute o seguinte comando para criar seu aplicativo:
Em seu terminal, execute o seguinte comando para criar seu aplicativo:
dotnet new webapi -o MyMicroservice --no-https
Em seguida, navegue até o novo diretório criado pelo comando anterior:
cd MyMicroservice
O que esses comandos significam?
O comando dotnet
cria um novo aplicativo do tipo webapi
(que é um ponto de extremidade da API REST).
- O parâmetro
-o
cria um diretório chamadoMyMicroservice
em que seu aplicativo é armazenado. - O sinalizador
--no-https
cria um aplicativo que será executado sem um certificado HTTPS, para manter as coisas simples para implantação.
O comando cd MyMicroservice
o coloca no diretório de aplicativos recém-criado.
O código gerado
Vários arquivos foram criados no diretório MyMicroservice
para fornecer um serviço simples que está pronto para ser executado, incluindo os seguintes arquivos:
- O
Program.cs
é o arquivo de ponto de entrada e contém todas as configurações que são carregadas quando o aplicativo é iniciado e possui código para uma API simples que retorna a previsão do tempo para os próximos cinco dias. Ele também inicia o aplicativo. MyMycroservice.http
é usado para testar os projetos do ASP.NET Core.MyMicroservice.csproj
define a versão do .NET em que o aplicativo está direcionando, quais bibliotecas o projeto faz referência, etc.- O arquivo
launchSettings.json
dentro do diretórioProperties
define diferentes configurações de perfil para o ambiente de desenvolvimento local. Um número de porta variando entre 5000 e 5300 é atribuído automaticamente na criação do projeto e salvo neste arquivo.
O código a seguir mostra o conteúdo do arquivo Program.cs
:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
app.MapGet("/weatherforecast", () =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
(
DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
))
.ToArray();
return forecast;
})
.WithName("GetWeatherForecast")
.WithOpenApi();
app.Run();
record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
Selecione o botão Continuar abaixo para ir para a próxima etapa.
Encontrou um erro?
Não foi possível criar uma mensagem semelhante ao Template "ASP.NET Core Web API". Falha ao criar o modelo. Detalhes: O acesso ao caminho 'C:\Windows\System32\MyMicroservice' foi negado, altere seu diretório atual para um em que você tenha permissões para criar uma nova pasta e tente executar o comando novamente.
Se o Windows não encontrar o SDK ao tentar criar o projeto e você tiver certeza de que instalou o SDK, seu computador poderá ter um problema com a variável de ambiente PATH. Confira esta postagem do Stack Overflow para obter instruções sobre como diagnosticar e corrigir esse problema.
Se o problema não for resolvido, selecione o botão Ocorreu um problema abaixo para obter ajuda para corrigir o problema.
Executar seu serviço
Em seu prompt de comando, execute o seguinte comando:
Em seu terminal, execute o seguinte comando:
dotnet run
Você deverá ver uma saída semelhante à seguinte:
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5020
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Users\Ana\MyMicroservice
Aguarde até que o aplicativo exiba que ele está escutando em http://localhost:<port number> e abra um navegador e navegue até http://localhost:<port number>/weatherforecast.
Nesse exemplo, ele mostrou que estava escutando na porta 5020, portanto, a imagem a seguir mostra a URL localhost:5020/weatherforecast
.
Parabéns! Você tem um serviço simples em execução!
Pressione CTRL+C no prompt de comando para encerrar o comando dotnet run
que está executando o serviço localmente.
Pressione CTRL+C no terminal para encerrar o comando dotnet run
que está executando o serviço localmente.
Encontrou um erro?
Se receber uma mensagem semelhante a Não foi encontrada nenhuma página da Web para o endereço da Web: http://localhost:5020, verifique se está visualizando a página Previsão do tempo do seu aplicativo. O URL deve ser semelhante a http://localhost:5020/weatherforecast e não apenas a http://localhost:5020.
Instalar Docker
O Docker é uma plataforma que permite combinar um aplicativo mais sua configuração e suas dependências em uma única unidade implantável independentemente chamada contêiner.
Se você já possui o Docker instalado, verifique se é a versão 23.0.0 ou superior.
Baixar e instalar
Você deve se registrar no Docker Store para poder baixar o instalador.
Por padrão, o Docker usará Contêineres do Linux no Windows. Deixe essas definições de configuração como estão quando solicitado no instalador.
Depois de instalar o Docker, você pode ser solicitado a sair para finalizar a instalação.
Verifique se o Docker está pronto para uso
Depois de instalar, abra um novo prompt de comando e execute o seguinte comando:
Depois de instalar, abra um novo terminal e execute o seguinte comando:
docker --version
Se o comando for executado exibindo algumas informações de versão o Docker será instalado com êxito.
Adicionar metadados do Docker
Para executar com uma imagem do Docker, você precisa de um Dockerfile
— um arquivo de texto que contém instruções sobre como criar seu aplicativo como uma imagem do Docker. Uma imagem do Docker contém tudo o que é necessário para executar seu aplicativo como um contêiner do Docker.
Retornar ao diretório de aplicativos
Já que abriu um novo prompt de comando na etapa anterior, você precisará retornar ao diretório no qual criou o serviço.
Como você abriu um novo terminal na etapa anterior, precisará retornar ao diretório no qual criou o serviço.
cd MyMicroservice
Adicionar um DockerFile
Criar um arquivo chamado Dockerfile
com este comando:
touch Dockerfile
fsutil file createnew Dockerfile 0
Em seguida, você pode abri-lo em seu editor de texto favorito.
Você pode então abri-lo em seu editor de texto favorito manualmente ou com este comando:
open Dockerfile
start Dockerfile
Substitua o conteúdo do Dockerfile
para o seguinte no editor de texto:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY MyMicroservice.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyMicroservice.dll"]
Observação: certifique-se de nomear o arquivo como Dockerfile
e não Dockerfile.txt
ou algum outro nome.
Opcional: Adicionar um arquivo .dockerignore
Um arquivo .dockerignore reduz o conjunto de arquivos usados como parte da “compilação do Docker”. Menos arquivos resultarão em compilações mais rápidas.
Crie um arquivo chamado .dockerignore
arquivo (isso é semelhante a um arquivo de .gitignore
se você já conhece deles) com este comando:
touch .dockerignore
fsutil file createnew .dockerignore 0
Em seguida, você pode abri-lo em seu editor de texto favorito.
Você pode então abri-lo em seu editor de texto favorito manualmente ou com este comando:
open .dockerignore
start .dockerignore
Substitua o conteúdo do .dockerignore
para o seguinte no editor de texto:
Dockerfile
[b|B]in
[O|o]bj
Criar imagem do Docker
Execute o seguinte comando:
docker build -t mymicroservice .
O comando docker build
usa o Dockerfile
para criar uma imagem do Docker.
- O parâmetro
-t mymicroservice
instrui-o a marcar (ou nomear) a imagem comomymicroservice
. - O parâmetro final informa qual diretório usar para localizar o
Dockerfile
(.
especifica o diretório atual). - Esse comando baixará e criará todas as dependências para criar uma imagem do Docker e poderá levar algum tempo.
Você pode executar o comando a seguir para ver uma lista de todas as imagens disponíveis em seu computador, incluindo a que você acabou de criar.
docker images
Executar imagem do Docker
Você pode executar seu aplicativo em um contêiner usando o seguinte comando:
docker run -it --rm -p 3000:8080 --name mymicroservicecontainer mymicroservice
Você pode navegar até a seguinte URL para acessar seu aplicativo em execução em um contêiner: http://localhost:3000/weatherforecast
Opcionalmente, você pode exibir o contêiner em execução em uma janela de prompt de comando separada usando o seguinte comando:
Opcionalmente, você pode exibir o contêiner em execução em uma janela de terminal separada usando o seguinte comando:
docker ps
Pressione CTRL+C no seu prompt de comando para encerrar o comando docker run
que está executando o serviço em um contêiner.
Pressione CTRL+C no seu terminal para encerrar o comando docker run
que está executando o serviço em um contêiner.
Parabéns! Você criou com sucesso um pequeno serviço independente que pode ser implantado e ampliado usando contêineres do Docker.
Estes são os blocos de criação fundamentais de microsserviços.
Encontrou um erro?
Se você receber uma mensagem semelhante a ERRO: erro durante a conexão: esse erro pode indicar que o daemon do Docker não está em execução, isso pode indicar que você precisa iniciar o aplicativo Docker. Verifique se o cliente Docker está em execução executando docker run hello-world
. Isso deve efetuar pull e executar a imagem. Para obter mais ajuda, consulte a documentação do Docker para obter instruções sobre como diagnosticar e corrigir esse problema.
Próximas etapas
Parabéns! Você criou um serviço simples e o executou em um contêiner do Docker.
Agora, você pode aprender a implantar seu microserviço na nuvem com nosso próximo tutorial.
Tutorial: Implantar microsserviço no Azure
Você também pode estar interessado em...