From 5b65ac4a2f82f7c675ee644a8a874b083bad850d Mon Sep 17 00:00:00 2001 From: Toutsu Date: Thu, 21 May 2026 14:21:35 +0300 Subject: [PATCH] chore(discord): add healthcheck to compose.yaml discord service Issue #32 --- compose.yaml | 5 +++++ .../Discord/DiscordProjectStructureTests.cs | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/compose.yaml b/compose.yaml index b56b02b..4d0ac8e 100644 --- a/compose.yaml +++ b/compose.yaml @@ -77,6 +77,11 @@ services: - "Discord__Token=${DISCORD_BOT_TOKEN:?Set DISCORD_BOT_TOKEN in .env}" networks: - gmrelay + healthcheck: + test: ["CMD-SHELL", "wget -qO- http://localhost:8082/health || exit 1"] + interval: 10s + timeout: 5s + retries: 3 web: image: git.codeanddice.ru/toutsu/gmrelay-web:2.7.0 diff --git a/tests/GmRelay.Bot.Tests/Discord/DiscordProjectStructureTests.cs b/tests/GmRelay.Bot.Tests/Discord/DiscordProjectStructureTests.cs index f555442..23590fb 100644 --- a/tests/GmRelay.Bot.Tests/Discord/DiscordProjectStructureTests.cs +++ b/tests/GmRelay.Bot.Tests/Discord/DiscordProjectStructureTests.cs @@ -93,4 +93,21 @@ public sealed class DiscordProjectStructureTests Assert.Contains("DISCORD_BOT_TOKEN", envExample); } + + [Fact] + public void Compose_ShouldIncludeDiscordHealthcheck() + { + var repoRoot = GetRepoRoot(); + var compose = File.ReadAllText(Path.Combine(repoRoot, "compose.yaml")); + + var discordIndex = compose.IndexOf("discord:", StringComparison.Ordinal); + Assert.True(discordIndex >= 0, "compose.yaml should contain discord service"); + + var nextServiceIndex = compose.IndexOf(" web:", StringComparison.Ordinal); + var discordBlock = compose[discordIndex..nextServiceIndex]; + + Assert.Contains("healthcheck:", discordBlock); + Assert.Contains("test:", discordBlock); + Assert.Contains("localhost:8082/health", discordBlock); + } }