Docker 容器中控制台应用的运行状况检查 [已关闭]

Healthcheck for console app in Docker container [closed]

提问人:Roman 提问时间:11/15/2023 最后编辑:Roman 更新时间:11/15/2023 访问量:61

问:


想改进这个问题吗?更新问题,以便可以通过编辑这篇文章用事实和引文来回答。

7天前关闭。

我有打包在 docker 容器中的控制台应用程序。 这很简单.NET6.0 控制台应用程序

using Microsoft.Extensions.Configuration;

var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddEnvironmentVariables();

var configuration = builder.Build();

var baseAddress = configuration.GetValue<string>("BASE_ADDRESS");

Console.WriteLine($"Hello, World! {baseAddress}");

对此控制台应用程序进行健康检查的最佳做法是什么?

如果是 Web 应用程序,我可以添加终结点 \health。 但我有控制台应用程序。在这种情况下,我该怎么办?

C# docker 控制台-应用程序

评论

0赞 Tal Rofe 11/15/2023
控制台应用是什么意思?你如何运行这个应用程序?
1赞 Roman 11/15/2023
我编辑了我的帖子。这很简单.NET6.0 控制台应用程序

答:

2赞 Selaka Nanayakkara 11/15/2023 #1

可以在没有运行状况检查终结点的情况下使用 Powershell 脚本。

例如:

创建运行状况 healthcheck.sh:

pgrep -f "your_application_executable" > /dev/null

在 docker 文件中使用 copy health check 命令

COPY healthcheck.sh /app 

HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 CMD ["./healthcheck.sh"]

然后构建 docker 镜像:

docker build -t your_image_name .
docker run -d --name your_container_name your_image_name

使用 docker inspect 检查应用程序运行状况:

docker inspect --format='{{json .State.Health.Status}}' your_container_name