Generator healthcheck Docker
Zbuduj poprawną sondę HTTP, TCP lub polecenie dla Docker Compose i Dockerfile.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator Docker healthcheck dla Compose i Dockerfile
Generator Docker healthcheck tworzy dwa warianty tej samej sondy: sekcję healthcheck do pliku Compose oraz instrukcję HEALTHCHECK do Dockerfile. Wybierz test HTTP, TCP albo własne polecenie, ustaw interwał, limit czasu, liczbę prób i okres startowy, a narzędzie zwróci składnię gotową do wklejenia.
Uruchomiony proces nie zawsze oznacza sprawną usługę. Serwer może działać, lecz nie przyjmować połączeń, czekać na bazę albo zwracać błędy. Sonda wykonuje małą, powtarzalną kontrolę wewnątrz kontenera i na podstawie kodu wyjścia pozwala Dockerowi ustawić stan healthy lub unhealthy. Generator niczego nie uruchamia i nie łączy się z kontenerem — tylko składa tekst konfiguracji.
Jaki rodzaj testu wybrać?
| Typ | Co sprawdza | Wymaganie w obrazie | Zastosowanie |
|---|---|---|---|
| HTTP | Kod odpowiedzi adresu lokalnego | curl | API, aplikacja WWW, panel administracyjny |
| TCP | Możliwość otwarcia portu | nc | Prosty serwer bez endpointu diagnostycznego |
| Polecenie | Kod wyjścia własnej kontroli | Narzędzia użyte w poleceniu | Baza, kolejka, proces roboczy lub skrypt projektu |
HTTP daje zwykle najwięcej informacji, pod warunkiem że endpoint sprawdza istotne zależności i odpowiada szybko. TCP potwierdza tylko, że coś nasłuchuje. Własne polecenie jest najbardziej elastyczne, ale działa przez powłokę kontenera; wklejaj wyłącznie komendy, które rozumiesz. Narzędzie odrzuca znaki nowej linii, aby jedna wartość nie mogła dopisać kolejnej instrukcji Dockerfile.
Parametry czasu i próg awarii
interval określa odstęp między uruchomieniami, timeout maksymalny czas pojedynczej próby, a retries liczbę kolejnych porażek przed zmianą stanu. start_period daje aplikacji czas na rozruch; nie jest opóźnieniem pierwszej próby, lecz okresem, w którym nieudane kontrole nie wypełniają zwykłego licznika porażek. Generator przyjmuje czytelne wartości z jednostkami ms, s, m lub h, na przykład 500ms, 30s i 2m.
Rozsądny punkt startowy dla lekkiego API to interwał 30 sekund, timeout 5 sekund, trzy próby i 10–30 sekund okresu startowego. Nie ustawiaj sondy co sekundę, jeśli wykonuje zapytanie do kilku usług. Sama kontrola może wtedy stać się źródłem obciążenia, a krótkie skoki opóźnienia będą powodowały fałszywe alarmy.
Jak użyć wygenerowanego wyniku
- Wybierz HTTP, TCP lub własne polecenie. Dla HTTP podaj port aplikacji i ścieżkę zaczynającą się od
/. - Ustaw czasy i liczbę prób. Okres startowy dopasuj do najwolniejszego poprawnego uruchomienia, a nie do średniej.
- Skopiuj blok spod nagłówka
docker-compose.ymldo właściwej usługi, zachowując poziom wcięcia YAML. - Jeśli budujesz własny obraz, skopiuj instrukcję spod nagłówka
Dockerfile. Upewnij się, że obraz zawieracurlalbonc. - Zbuduj obraz i sprawdź stan poleceniem
docker inspect. Sam generator nie zastępuje testu na rzeczywistym obrazie.
docker inspect --format='{{json .State.Health}}' nazwa-kontenera
docker compose ps
Compose, Dockerfile i poprawna składnia CMD
Compose zapisuje polecenie jako tablicę ["CMD-SHELL", "..."], natomiast Dockerfile wymaga formy HEALTHCHECK ... CMD .... To podobne mechanizmy, ale nie wolno wkleić słowa CMD-SHELL po opcjach instrukcji Dockerfile. Generator rozdziela oba formaty i koduje wartość Compose jak tablicę JSON, dzięki czemu cudzysłowy i ukośniki nie psują YAML.
Jeśli przygotowujesz cały obraz, kolejność warstw, użytkownika procesu i pakiety systemowe dobierzesz z pomocą generatora .gitignore jako listy wzorców dla kontekstu oraz wskazówek w walidatorze YAML dla pliku Compose. Healthcheck jest częścią konfiguracji, nie zamiennikiem monitoringu i metryk.
Bezpieczeństwo i zachowanie w razie awarii
Endpoint diagnostyczny nie powinien ujawniać wersji, konfiguracji, zapytań ani sekretów. Zwykłe 200 lub 503 wystarczy. Test działa wewnątrz kontenera, dlatego generator używa adresu 127.0.0.1, a ścieżkę cytuje dla powłoki. Kod użytkownika nie jest wykonywany na webp.pl.
condition: service_healthy, a decyzję o naprawie powinien podejmować orkiestrator lub monitoring.Nie testuj wyłącznie zewnętrznej strony, jeśli kontener ma działać także podczas krótkiego problemu z DNS. Nie umieszczaj w poleceniu tokenów ani haseł — są widoczne w konfiguracji obrazu. Uprawnienia do plików używanych przez własny skrypt sprawdzisz kalkulatorem chmod, a reguły dostępu serwera możesz przygotować przez generator .htaccess.
Najczęściej zadawane pytania
Czy Docker automatycznie restartuje kontener unhealthy?
Nie w zwykłym trybie Docker Engine. Stan healthchecka jest informacją. Polityka --restart reaguje na wyjście głównego procesu; automatyczną reakcję na unhealthy zapewnia dopiero odpowiednio skonfigurowany orkiestrator albo zewnętrzny monitoring.
Dlaczego curl lub nc nie działa w kontenerze?
Minimalne obrazy często nie zawierają tych programów. Dodaj właściwy pakiet na etapie budowania albo zastosuj kontrolę opartą na interpreterze już obecnym w obrazie. Sprawdź narzędzie interaktywnie przed włączeniem sondy.
Czy endpoint health powinien sprawdzać bazę danych?
Zależy od celu. Kontrola gotowości może sprawdzać krytyczną bazę, ale sonda żywotności nie powinna ubijać poprawnego procesu z powodu krótkiej awarii zależności. W Dockerze masz jeden healthcheck, więc wybierz tani kompromis i osobno monitoruj zależności.
Czy konfiguracja z Dockerfile działa w Kubernetes?
Kubernetes definiuje własne sondy liveness, readiness i startup, dlatego nie należy zakładać, że instrukcja Dockerfile zastąpi ich konfigurację. Te same endpointy i polecenia można jednak wykorzystać przy tworzeniu manifestów klastra.
Jak dobrać interval, timeout i retries?
Timeout powinien być dłuższy niż typowa odpowiedź, ale krótszy od interwału. Trzy próby co 20–30 sekund są rozsądnym początkiem dla większości aplikacji. Potem dopasuj wartości na podstawie pomiarów startu i opóźnień.