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.

imagem de uma estação central de trem

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.

foto em preto e branco de um homem usando laptop codificando

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.

captura de tela de status

Download

Clippy Octocat

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.