Wdrożenie Jitsi Meet może działać krótko, a następnie wyświetlać jedną lub więcej usług jako „Restartowanie” w Docker Desktop lub w docker compose ps. Docker zazwyczaj stosuje skonfigurowaną politykę restartu po zakończeniu procesu. Trwałym rozwiązaniem jest zidentyfikowanie usługi, która się kończy, odczytanie jej ostatnich logów i naprawienie błędu uruchamiania. Wielokrotne restartowanie całego stosu lub usuwanie jego woluminów może ukryć ślady lub usunąć trwałe dane.
1. Znajdź usługę, która się restartuje
Uruchom Compose z katalogu zawierającego ten sam plik Compose, którego .envużyto do uruchomienia tej instalacji. Jeśli zazwyczaj używasz dodatkowych plików Compose, profili lub innych plików --env-file, uwzględnij te same opcje.
docker compose ps -a
Sprawdź każdą usługę osobno. Usługi podstawowe to web, prosody, jicofoi jvb; mogą pojawić się również usługi opcjonalne, takie jak jibrilub jigasi. Zwróć uwagę na konkretną usługę, której stan to Restartinglub Exited. Jedna awaria usługi nie oznacza, że wszystkie kontenery mają tę samą usterkę.
Przeczytaj dziennik zdarzeń dla tej usługi, korzystając ze znaczników czasu:
docker compose logs --tail=150 --timestamps jicofo
Zastąp jicofousługą, której dotyczy problem. Dodaj -f, aby obserwować kolejną próbę uruchomienia. W przewodniku Jitsi Docker znajdują się dokumenty dotyczące logów Compose dla jego usług. Jeśli Docker nie może zwrócić logów, sprawdź, czy skonfigurowany sterownik rejestrowania w tym kontenerze obsługuje ich odczyt.
2. Poszukaj pierwszej fatalnej wiadomości
Przewiń do pierwszego wyraźnego błędu w każdym cyklu uruchamiania. W kolejnych wierszach może być jedynie informacja o zatrzymaniu procesu i ponownym uruchomieniu Dockera. Typowe przyczyny to:
- Brak wymaganych haseł: Jitsi usunął domyślne hasła dla wewnętrznych kont usług, a usługi, które ich potrzebują, nie uruchomią się, dopóki nie zostaną ustawione. W standardowym katalogu wdrożeniowym uruchom dostarczony
./gen-passwords.shskrypt, aby uzupełnić wymagane wartości w pliku .env. Chroń ten plik i nigdy nie publikuj jego sekretów w zgłoszeniu do pomocy technicznej.
- Nieprawidłowa lub nieczytelna konfiguracja: sprawdź ścieżkę do pliku i składnię podaną w komunikacie o błędzie. Niestandardowa konfiguracja Prosody, Jicofo lub JVB może uniemożliwiać uruchomienie tylko tej usługi.
- Brak zamontowanego katalogu lub katalog, który nie jest zapisywalny: sprawdź dokładną ścieżkę hosta w komunikacie o błędzie i porównaj ją z mapowaniem woluminów usługi. Unikaj zmiany uprawnień w całym drzewie konfiguracji.
- Awaria obrazu lub punktu wejścia: sprawdź, czy katalog wdrożenia, plik Compose i znaczniki obrazu należą do zgodnych wersji, zwłaszcza jeśli pętla rozpoczęła się po aktualizacji.
- Obciążenie pamięci: sprawdź stan kontenera i pamięć hosta. Awaria z powodu braku pamięci wymaga innego rozwiązania niż błędna konfiguracja.
Polityka restartu Dockera wyjaśnia, dlaczego proces powraca po wyjściu, ale nie wyjaśnia, dlaczego proces zakończył działanie. Traktuj ją Restartingjako objaw, a dziennik usługi jako dowód.
3. Sprawdź środowisko i skomponuj pliki
Upewnij się, że edytujesz plik, który Compose faktycznie wczytuje. Częstym błędem jest zmiana jednego pliku .env, podczas gdy Compose odczytuje inny z innego katalogu lub z jawnie podanego pliku --env-file. Sprawdź poprawność konfiguracji przed ponownym utworzeniem kontenerów:
docker compose config --quiet
Jeśli Compose zgłosi błąd, popraw nazwę YAML, zastąpienie zmiennej, brakujący plik referencyjny lub opcję. Uruchomienie docker compose configbez Compose --quietmoże pomóc w sprawdzeniu rozwiązanego modelu, ale może spowodować wydrukowanie interpolowanych haseł. Nie udostępniaj nieocenzurowanych wyników.
W przypadku standardowej instalacji Jitsi porównaj ją .envz instalacją env.examplez tej samej wersji i upewnij się, że wymagane hasła wewnętrzne są obecne. Jeśli używasz niestandardowego pliku Compose, sprawdź, czy potrzebne zmienne docierają do właściwej usługi. Użyj dołączonego skryptu haseł zamiast pustych symboli zastępczych. W przypadku zmiany hasła zachowaj spójność konfiguracji odpowiedniego komponentu.
Projekt Jitsi odróżnia pliki z normalnymi wydaniami od kodu rozwojowego i obrazów niestabilnych. Unikaj łączenia starego katalogu Compose, dowolnych tagów obrazów i plików z innej wersji podczas rozwiązywania problemów.
4. Sprawdź punkty montowania i uprawnienia konfiguracji
Porównaj wpisy woluminów usługi z rzeczywistymi ścieżkami hosta. Literówka, nieoczekiwana CONFIGwartość lub inny katalog roboczy Compose może spowodować, że wdrożenie użyje innego katalogu konfiguracyjnego.
Uprawnienia zależą od wersji Jitsi. Podręcznik mówi, że począwszy od wersji stable-11146, kontenery działają jako użytkownik bez uprawnień z systemem plików kontenera tylko do odczytu. Katalogi konfiguracyjne są danymi wejściowymi; dane do zapisu są rozdzielone na katalogi storagei tmp, które muszą być dostępne do zapisu dla UID/GID 1000. Starsze wersje używają innego układu. Postępuj zgodnie z podręcznikiem dla wersji, której używasz, zamiast ponownie wykorzystywać przepis na uprawnienia z innej wersji.
Jeśli dziennik zidentyfikuje brakujący lub niezapisywalny katalog, napraw dokładnie tę ścieżkę. Nie stosuj ogólnych poleceń, takich jak te odnoszące chmod -R 777się do całego katalogu konfiguracyjnego Jitsi; może to osłabić bezpieczeństwo bez naprawy zamontowanej ścieżki.
5. Sprawdź stan wyjścia i ostatnie zmiany
Docker może zgłosić kod wyjścia kontenera, status braku pamięci, liczbę restartów i błąd demona. Najpierw pobierz identyfikator kontenera dla usługi, która uległa awarii:
docker compose ps -q jicofo
Następnie podstaw zwrócony identyfikator:
docker inspect --format '{{.State.Status}} exit={{.State.ExitCode}} oom={{.State.OOMKilled}} restarts={{.RestartCount}} error={{.State.Error}}' CONTAINER_ID
Rosnąca liczba ponownych uruchomień potwierdza powtarzające się próby. Jeśli tak oom=true, sprawdź limity pamięci hosta lub kontenera oraz logi systemowe. Sam kod wyjścia różny od zera nie stanowi diagnozy; porównaj go z logiem serwisowym.
Jeśli pętla rozpoczęła się po aktualizacji, zanotuj, co się zmieniło: pliki wydania, tagi obrazów, hasło, montowanie powiązania lub konfiguracja niestandardowa. Przed zmianą wersji wykonaj kopię zapasową konfiguracji i danych trwałych. Przywróć zgodny zestaw plików i obrazów Compose lub postępuj zgodnie z instrukcjami aktualizacji Jitsi. Problemy z siecią i zaporą sieciową mogą uniemożliwić połączenie uczestnikom, ale zazwyczaj nie wyjaśniają, dlaczego proces usługi wielokrotnie się kończy; odróżnij awarię rozruchu od problemu z łącznością z nośnikiem.
6. Utwórz ponownie usługę po usunięciu przyczyny
Po zmianie wartości środowiska lub definicji Compose utwórz ponownie odpowiednią usługę, aby zastosować nową konfigurację:
docker compose up -d --force-recreate jicofo
Zastąp nazwę usługi. Jeśli zmiana w konfiguracji współdzielonej wpływa na kilka komponentów, utwórz ponownie odpowiednie usługi. Następnie ponownie sprawdź status i logi. Zwykły restart nie obejmuje każdej zmiany w Compose lub środowisku, podczas gdy ponowne utworzenie całego stosu może przerwać aktywne spotkania.
Nie należy używać jej docker compose down -vjako ogólnego rozwiązania problemu pętli restartu. Ta -vopcja usuwa woluminy zarządzane przez Compose i może spowodować usunięcie danych, które miały zostać zachowane. Przed usunięciem kontenerów lub danych należy zapisać logi i sprawdzić montowania.
Sprawdź poprawkę
Sprawdź status, odczekaj kilka normalnych odstępów czasu uruchamiania i sprawdź ponownie:
docker compose ps
docker compose logs --tail=100 --timestamps jicofo
Usługa, której dotyczy problem, powinna pozostać aktywna, liczba restartów powinna przestać rosnąć, a w jej logu nie powinien już pojawiać się ten sam komunikat krytyczny. Sprawdź, czy strona internetowa się ładuje i przetestuj spotkanie z dwoma klientami. Jeśli usługi nadal działają, ale uczestnicy nie mogą wymieniać dźwięku ani obrazu, sprawdź sieć, reguły zapory sieciowej i reklamowany adres JVB w podręczniku Jitsi.
W celach informacyjnych można skorzystać z przewodnika samodzielnego hostingu Jitsi Meet Docker , przykładu zmiennej środowiskowej projektu , dokumentacji zasad ponownego uruchamiania Dockera , odniesienia do dzienników Compose oraz odniesienia do Container Inspect .