jiheielf
jiheielf
CC#
Created by jiheielf on 3/28/2025 in #help
Worker Service .NET8 how to gracefully shutdown as a docker container
I'm a junior developer just starting to work with Docker, and I have a question regarding graceful shutdown of the worker services. I created a default worker service in Visual Studio, and my Worker class looks something like this:
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
// Do some async work
await myAsyncWork();
await mySecondAsyncWork();
await Task.Delay(1000, stoppingToken);
}
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
// Do some async work
await myAsyncWork();
await mySecondAsyncWork();
await Task.Delay(1000, stoppingToken);
}
}
After publishing the application as a Docker container, I noticed that when I run docker stop, it immediately aborts my async task inside await myAsyncWork(); or await mySecondAsyncWork();. Is there a way to ensure that when I run docker stop, the application finishes the current async task and finishes the current iteration of while (!stoppingToken.IsCancellationRequested) and then gracefully shuts down? And is there any best practise I should follow?
13 replies