.NET Core - Console Application com Docker
Veja neste artigo como construir uma aplicação Console Application long running com .NET Core e Docker.
Esta aplicação pode rodar periodicamente de acordo com a necessidade da sua aplicação.
Por que utilizar Console App & Docker
Ao utilizar containers Dockers há ganhos significativos no gerenciamento e publicação. Independência do ambiente e de tecnologias específicas de Cloud, como o Azure Functions e WebJobs do App Services.
SHOW ME THE CODE
Crie em novo projeto no Visual Studio do tipo Console App. (File > New > Project > .NET Core > Console App (.Net Core)).
Adicione a referência do Nuget FluentScheduler.
Substitua o código do Program.cs
:
Este código cria dois Jobs que irão rodar periodicamente. Um será a cada 5 minutos e o outro todo dia as 2 da manhã.
Para este Job que roda as 2 da manhã é necessário configurar o Datetime do Docker. Mais abaixo será abordado esse detalhe.
Dockerfile
O Visual Studio cria um arquivo Dockerfile de forma muito competente. Então click com o botão direito em cima do projeto e vá em Add > Container Orchestrator Support. (Versões anteriores podem ter apenas a opção Add Docker Support.
Em seguida selecione: Linux.
O Visual Studio cria um arquivo Dockerfile pronto para buildar e rodar a aplicação num container. É necessário adicionar o timezone do Brasil e assim o Agendamento feito com o FluentSchesduler rodar corretamente. Observe o Dockerfile abaixo.
Os comandos abaixo alteram para o timezone Brasileiro
# Configure timezone
RUN unlink /etc/localtime
RUN ln -s /usr/share/zoneinfo/Brazil/East /etc/localtime
Testando
Abra um console de dentro da pasta do projeto e use os comandos
docker-compose build
docker run <image>
O primeiro comando gera uma saida assim:
Successfully built ef14ca42abf2
Successfully tagged dockerconsole:latest
Este é o nome da imagem para ser substituido no comando acima.
Para saber se o sistema está rodando, pode utilizar o comando
docker ps
Download
O código do projeto está disponível no meu GitHub
Feedback!
Me diga o que achou? Deixe teu comentário, suas impressões e vamos convesar!