האם Discourse יכול לשדרג תמונות Docker תדירות שאינן צריכות להיות מבוססות מראש?

ל-Docker compose אין את הפונקציונליות הנדרשת. מבנה יצירת התבניות של קבצי ה-docker של Discourse מאפשר תוצאות docker גמישות. עם compose, כל מה שיש לך הוא סט אפשרי של Dockerfiles קבועים שיכולים להוביל להרבה קונטיינרים.

בהגדרת ה-Discourse שלי, אני משתמש בקונטיינר יחיד עם Discourse ו-nginx המשתמשים ב-UNIX socket. PostgreSQL ו-Redis הם שירותים על המארח (host). זהו סטייה די משמעותית מההגדרה ברירת המחדל, אבל זה אפשרי ‘out of the box’.

זה אפשרי חלקית עם compose, אולי על ידי שימוש בתכונת הפרופילים (profile) שתוכננה בצורה לא מוצלחת. אבל גם אז זה די מבולגן. או שתצטרך לספק קבצי compose שונים עבור כל וריאציה.

אתה פשוט מעביר את הבעיה.

הגדרה נקייה של compose עבור Discourse תהיה השירותים הבאים בקונטיינרים נפרדים:

  • Discourse
  • nginx
  • PostgreSQL
  • Redis

Discourse ו-nginx צריכים לשתף volume, זה לא ביג דיל.

PostgreSQL ו-Redis… אלו דברים שאולי תרצה לארח במקום אחר, ולא שיהיה להם קונטיינר ספציפי ל-Discourse. ועכשיו docker compose הופך לבעיה: docker compose up -d יפעיל את ה-PostgreSQL הלא רצוי שלך. אוקיי, אז אנחנו מגדירים את זה כ-docker compose --profile postgresql up -d כדי להפעיל את הגדרת ה-discourse הבסיסית, וקונטיינר postgresql. docker compose --profile postgresql --profile redis up -d עבור הגדרת קונטיינר ה-Discourse העצמאית ה"מלאה". עדיף שלא תשכח ארגומנט --profile ..., כי אז יהיו לך יותר בעיות.

אז לחוויית משתמש (UX) טובה יותר, אתה יוצר launcher שידאג ליצירת פקודת ה-docker compose הרצויה. עכשיו אנחנו בעצם חוזרים לאותה נקודה. למעט העובדה ששינויים בקונטיינר ה-nginx עדיין אינם אפשריים. אז אני צריך קונטיינר nginx-http וקונטיינר nginx-unix שצריכים להיות הדדיים (mutually exclusive)? …

בטח שניהול הפלאגינים (plugin management) יכול להיות טוב יותר, אבל לעשות את זה עם docker compose, זה יהיה גיהינום.

לייק 1