Neste artigo, você vai aprender a criar um Console App em .NET Core que roda no Docker e executa a cada 15 segundos usando CRON.
Serviços em Segundo Plano
Apps para celular e web são sempre o foco, mas nos negócios, são os serviços em segundo plano que fazem tudo funcionar. Vamos ver como usar .NET Core para criar esses serviços usando Docker.
Portabilidade
Aproveitar a portabilidade do .NET Core ajuda a fazer serviços que funcionam em loop, por exemplo. Algumas opções são:
- Background Services com ASP.NET Core
- Plugin Hangfire para ASP.NET Core
- Azure Functions
- Console Application & Docker
Por que escolher Console App & Docker?
Azure Functions pode parar de funcionar, Hangfire precisa de um banco de dados, e usar ASP.NET Core com IIS é provisório. Docker oferece liberdade e eficiência, encerrando tudo em um mini-ambiente, ótimo para DevOps.
Mãos à Obra
Crie um novo projeto no Visual Studio: Console App (.NET Core). Troque o conteúdo do Program.cs
:
<gist content>
Adicione suporte ao Docker: Clique com o botão direito no projeto e vá em Add > Container Orchestrator Support (ou Add Docker Support).
Configure no Dockerfile para ajustar o CRON:
<gist content>
O HEALTHCHECK garante que tudo está certo no container.
Teste
No terminal, dentro da pasta do projeto, use:
docker-compose build
docker run <image>
Confira se deu certo com:
docker ps
Se tudo estiver bem, verá um (healthy) no STATUS.
Download

O código está no GitHub
Feedback!
Quero saber sua opinião. Deixe seus comentários!
Atualização
Agora, dá para criar Windows Service usando .NET Core com System.ServiceProcess.ServiceController, graças ao Thomaz Moura.