NetSendo v2.11.4: naprawa healthchecka kontenera webserver
Monitoring zgłasza, że webserver NetSendo nie działa, a przecież kampanie wychodzą, panel się ładuje i przybywa subskrybentów. Co się dzieje? Jeśli uruchamiasz NetSendo przez Docker Compose, możesz to znać: docker compose ps pokazywał kontener webserver jako "unhealthy", choć wszystko inne działało.
NetSendo v2.11.4 to naprawia. Zmiana jest mała, ale dotyczy każdej instalacji. Ma też większe znaczenie, niż się wydaje, bo fałszywy sygnał o stanie kontenera sprawia, że alerty tracą sens, i blokuje usługi zależne od zdrowego webservera.
http://localhost/. W obrazie nginx ta nazwa najpierw rozwiązuje się do adresu IPv6 ::1, a nginx nasłuchuje tylko na IPv4, więc każde sprawdzenie kończyło się odmową połączenia. Wersja v2.11.4 zmienia adres na http://127.0.0.1/. Poprawka jest tylko w docker-compose.yml, więc samo pobranie nowego obrazu jej nie wprowadzi. Musisz zaktualizować plik compose (patrz README → Updates) albo samodzielnie poprawić healthcheck, a potem uruchomić docker compose up -d.
🚀 Co nowego w v2.11.4
Problem: healthcheck pukał do niewłaściwych drzwi
Healthchecki Dockera co jakiś czas uruchamiają polecenie wewnątrz kontenera. Jeśli polecenie się nie powiedzie, Docker oznacza kontener jako unhealthy. Healthcheck webservera NetSendo wysyłał zapytanie na http://localhost/, co wydaje się rozsądne.
Haczyk tkwi w rozwiązywaniu nazw. W obrazie nginx localhost wskazuje zarówno na 127.0.0.1 (IPv4), jak i na ::1 (IPv6), a klient najpierw próbuje ::1. Nginx w NetSendo nasłuchuje tylko na IPv4. Każde sprawdzenie trafiało więc pod adres IPv6, na którym nic nie nasłuchiwało. Połączenie było odrzucane, a Docker zapisywał kolejną porażkę.
ℹ️ Analogia: Wyobraź sobie budynek z dwoma wejściami: IPv4 i IPv6. Recepcjonista (nginx) pracuje tylko przy drzwiach IPv4. Healthcheck pukał do drzwi IPv6, nikt nie otwierał, więc zgłaszał, że nikogo nie ma. W tym czasie prawdziwi goście swobodnie wchodzili drzwiami IPv4.
Poprawka: jawny adres
Healthcheck odpytuje teraz bezpośrednio http://127.0.0.1/. Nie ma rozwiązywania nazwy ani zgadywania między IPv4 a IPv6, więc sprawdzenie trafia pod adres, na którym nginx faktycznie nasłuchuje.
Prawidłowy status
Webserver zgłasza "healthy", gdy faktycznie działa.
Wiarygodny monitoring
Narzędzia czytające stan z Dockera przestają podnosić fałszywe alarmy.
Usługa MCP startuje
Opcjonalna usługa mcp, która czeka na zdrowy webserver, może się teraz uruchomić.
⚠️ Ważne: W tym wydaniu aplikacja się nie zmieniła. Zmienił się tylkodocker-compose.yml. Jeśli uruchomisz wyłączniedocker compose pull, kontenery nadal będą "unhealthy", bo stary healthcheck wciąż jest w Twoim lokalnym pliku compose.
💼 Dlaczego to ważne: scenariusze z praktyki
E-commerce: alerty, którym można ufać
Gdy sekwencje porzuconych koszyków i wiadomości po zakupie działają na NetSendo, musisz od razu wiedzieć, jeśli webserver naprawdę padnie. Kontener, który zawsze pokazuje "unhealthy", uczy zespół ignorować alerty, a wtedy przeoczy też prawdziwą awarię. Po poprawce:
- Panele uptime czytające stan z Dockera świecą na zielono, gdy usługa działa
- Alerty znów coś znaczą
- Prawdziwa awaria wyraźnie odróżnia się od szumu
SaaS: odblokowanie usługi MCP
Zespoły, które włączyły opcjonalną usługę mcp do przepływów wspieranych przez AI, np. automatyzacji onboardingu czy zapobiegania odejściom klientów, zauważyły, że nigdy się nie uruchamiała. Czeka ona na zdrowy webserver, a webserver nigdy nie osiągał tego stanu. Po wdrożeniu poprawki mcp startuje zgodnie z oczekiwaniami.
Agencje: porządek w wielu instancjach
Jeśli prowadzisz osobne instancje NetSendo dla wielu klientów, fałszywy status "unhealthy" na każdej z nich zaśmieca widok całej floty. Gdy wdrożysz zaktualizowany plik compose we wszystkich instancjach, od razu zobaczysz, którzy klienci naprawdę wymagają uwagi.
🛠️ Krok po kroku: wdrożenie poprawki
Możesz skorzystać z jednej z dwóch metod. Zalecamy metodę A, bo utrzymuje Twój plik compose w zgodzie z wersją główną projektu.
Metoda A: pobierz nowy docker-compose.yml
-
Zrób kopię obecnego pliku compose
Zanim go zastąpisz, zachowaj kopię, żeby móc przywrócić lokalne zmiany.
cp docker-compose.yml docker-compose.yml.bak -
Postępuj według README → Updates
README NetSendo ma sekcję Updates, która wyjaśnia, jak pobrać najnowszy
docker-compose.yml. Postępuj zgodnie z nią, aby pobrać wersję z v2.11.4. -
Przenieś swoje modyfikacje
Porównaj nowy plik z kopią i ponownie wprowadź własne zmiany, np. porty, wolumeny czy dodatkowe usługi.
diff docker-compose.yml.bak docker-compose.yml -
Odtwórz kontenery
docker compose up -d
Metoda B: popraw healthcheck ręcznie
-
Otwórz docker-compose.yml
Znajdź usługę
webserveri jej blokhealthcheck. -
Zamień localhost na 127.0.0.1
W poleceniu
testhealthchecka zmieńhttp://localhost/nahttp://127.0.0.1/. Resztę polecenia zostaw bez zmian. Schematycznie zmiana wygląda tak:# przed healthcheck: test: [ ... "http://localhost/" ... ] # po healthcheck: test: [ ... "http://127.0.0.1/" ... ] -
Zastosuj zmianę
docker compose up -dCompose wykryje, że konfiguracja usługi się zmieniła, i odtworzy kontener webserver.
Sprawdź, czy zadziałało
Po upływie interwału healthchecka sprawdź status:
docker compose ps
Webserver powinien teraz pokazywać (healthy). Jeśli chcesz zobaczyć szczegóły, możesz sprawdzić ostatni log stanu kontenera:
docker inspect --format '{{json .State.Health}}' $(docker compose ps -q webserver)
Typowe pułapki
- Samo pobieranie obrazów:
docker compose pullnie zmienia pliku compose, więc stary healthcheck zostaje. - Zbyt wczesne sprawdzanie: zaraz po restarcie status przez chwilę brzmi "starting". Odczekaj co najmniej jeden interwał healthchecka.
- Zbyt szerokie wyszukaj-i-zamień: globalny
sednalocalhostmoże zmienić inne usługi, które go potrzebują. Edytuj tylko healthcheck webservera.
🎯 Wskazówki ekspertów
We własnych kontenerach używaj 127.0.0.1 (albo [::1], jeśli usługa nasłuchuje na IPv6) zamiast localhost. Unikniesz niespodzianek związanych z kolejnością rozwiązywania nazw w różnych obrazach bazowych.
Umieść lokalne zmiany w docker-compose.override.yml. Wtedy przy każdej aktualizacji możesz przyjąć oryginalny docker-compose.yml bez ręcznego scalania.
Gdy wydanie informuje, że zmienił się tylko docker-compose.yml, potraktuj to jako krok ręczny. Dodaj do procedury aktualizacji porównanie pliku compose.
Ustaw monitoring tak, żeby reagował na zmianę stanu z healthy na unhealthy. Dzięki temu alerty pozostają użyteczne, a teraz, gdy healthcheck działa poprawnie, to podejście sprawdza się dobrze.
✅ Podsumowanie
- Healthcheck webservera odpytuje teraz
127.0.0.1i zgłasza prawidłowy status - Monitoring czytający stan z Dockera przestaje pokazywać fałszywe awarie
- Opcjonalna usługa
mcpznów może się uruchomić - Brak zmian w aplikacji, więc aktualizacja nie stwarza ryzyka dla danych ani kampanii
Pamiętaj, że poprawka jest w docker-compose.yml. Zaktualizuj plik albo popraw tę jedną linię, a potem uruchom docker compose up -d. NetSendo działa na Twoim serwerze, więc masz pełną kontrolę nad całym stosem, a takie drobne poprawki sprawiają, że raportuje on swój stan rzetelnie. Więcej o uruchamianiu NetSendo produkcyjnie znajdziesz w dokumentacji. Zajrzyj też do listy dostępnych integracji.
Zadbaj o zdrowie swojego stosu NetSendo
Zaktualizuj do v2.11.4 i zyskaj statusy Dockera, którym możesz ufać:
Podoba Ci się to, co tworzymy? Daj NetSendo gwiazdkę na GitHubie ⭐



