‏Open WebUI מסומן unhealthy בהפעלה הראשונה, ו-docker compose up --wait נכשל

על volume חדש, ההפעלה הראשונה של Open WebUI יכולה להימשך יותר ממה שה-HEALTHCHECK של ה-image מאפשר. ‏Docker מסמן את ה-container כ-unhealthy ו-docker compose up --wait נכשל, למרות שה-container ממשיך לרוץ. ‏start_period של 120 שניות פתר את זה.

תועד ב-12 באוקטובר 2026

סביבה

מערכת הפעלה
Ubuntu 24.04.5 LTS (GitHub Actions ubuntu-24.04 runner, image 20261004.327.1)
רץ על
GitHub Actions hosted runner
גרסאות
Docker Engine 28.0.4Docker Compose 2.38.2Open WebUI v0.11.4Ollama 0.40.2

הגרסאות הן אלה שנרשמו בהרצה 38256885780. ההרצה שנכשלה, 38210088287, הריצה את אותו workflow על אותה תווית runner.

תסמין

בהרצה 38210088287 של runtime-verify, ה-target ‏open-webui__default__caddy נכשל עם up-wait-failed: הפקודה docker compose up --wait החזירה שגיאה כי ה-container של open-webui היה unhealthy. חמש אפליקציות אחרות באותה הרצה עברו.

ה-container עצמו המשיך לרוץ ועבר ל-healthy ברגע שהאפליקציה ענתה, כך שהכשל היה זמני.

שורש הבעיה

ה-image של Open WebUI ‏(v0.11.4) מגדיר HEALTHCHECK משלו עם ברירות המחדל של Docker: מרווח של 30 שניות, 3 ניסיונות ובלי תקופת התחלה. הפעלה ראשונה על volume ריק (migrations של מסד הנתונים, מודל ה-embedding) יכולה להימשך יותר מכ-90 שניות, ולכן שלוש בדיקות שנכשלו מסמנות את ה-container כ-unhealthy לפני שהאפליקציה עלתה.

הפקודה docker compose up --wait מחכה שכל service יהיה running או healthy, ומתייחסת ל-unhealthy ככשל.

תיקון

לתת ל-HEALTHCHECK של ה-image תקופת התחלה בלי להחליף את הבדיקה שלו: בלוק healthcheck ב-Compose עם start_period בלבד. ‏Docker שומר את הבדיקה, המרווח, ה-timeout ומספר הניסיונות של ה-image. בדיקות שנכשלות בתקופת ההתחלה לא נספרות, ובדיקה שעוברת מוקדם יותר מסמנת את ה-container כ-healthy מיד.

התבנית של Open WebUI ב-ANAROQ מגדירה start_period: 120s מגרסת פרופיל 1.2.0. בהרצה 38256885780 כל שמונה ההרצות של Open WebUI הגיעו ל-healthy תוך כ-30 שניות, כולל default__caddy.

פקודות

‏Compose: תקופת התחלה ל-HEALTHCHECK של ה-image עצמו
services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:v0.11.4
    healthcheck:
      start_period: 120s
הפעלת ה-stack והמתנה לכל ה-services
docker compose up -d --wait
מעקב אחרי בדיקות הבריאות של container
docker inspect --format '{{json .State.Health}}' <container>

ראיה

דוח הרצה ה-target שנכשל והתוצאה שלו, מתוך הדוח של ההרצה.

מקור: runtime-verify run 38210088287

open-webui__default__caddy  up-wait-failed  (open-webui: unhealthy)
דוח הרצה אותה תבנית עם start_period: 120s, גרסת פרופיל 1.2.0.

מקור: runtime-verify run 38256885780

open-webui  8 runs (default, extra-model-true × 4 exposure modes)  8/8 passed  profileVersion 1.2.0

מקורות

הרשומה מבוססת על תיעוד האימות של ANAROQ עצמו, שנשמר במאגר של הפרויקט.

איך נבנים פרופילים וקובצי Compose מאומתים מתואר במתודולוגיה. למתודולוגיה

כל רשומות השטח