DockerSvc – Execute commands after container Update

DockerSvc

כאחד שמתחזק מספר סביבות ובהן כמות לא קטנה של קונטיינרים, יש לי מעת לעת צורך להתקין דברים נוספים על אותם קונטיינרים. אז מה הבעיה בזה? אתם בטח שואלים… ובכן, הבעיה מתחילה כאשר קונטיינר עובר עדכון, מה שמוביל לכך שההתקנות שהוספתי לאימאג' נמחקות לאחר עדכון שכזה ולא תמיד אני מודע לכך בזמן. לכן, לאחר שגיליתי את הקונטיינר המעולה שנקרא Ouruboros המאפשר לי גם לעדכן את הקונטיינרים באופן אוטומטי עלי ידי מיקרו-סרביס שכתבתי ועונה לשם DockerSvc, וגם לקבל עדכון על כך חשבתי על דרך למנף אותו גם לביצוע התקנות באופן אוטומטי, והתוצאה לפניכם.

בעזרת פייטון ו flask הצלחתי בצורה יחסית פשוטה להשתתמש בעדכונים לצורך הרצת פקודות על הקונטיינרים השונים על ידי הוספת notification בפורמט json ושליחתו למיקרוסרביס הכתוב ב flask.

במדריך זה אפרט אודות המערכת, אך לפני שנתחיל אנא וודאו כי התקנתם את Ouroboros על פי המדריך הבא.

שלב א' – התקנת התלויות והכנת קובץ ה service

על מנת שה service יעבוד בצורה תקינה יש להתקין מספר תלויות. לצורך כך כתבו את הפקודה הבאה:

כעת, צרו תיקיה תחת /opt וקראו לה dockersvc:

כעת, צרו בתוך התיקיה קובץ בשם dockersvc.py והדביקו פנימה את הקוד הבא:

כאשר, בחלק הבא תוכלו להוסיף התניית if עבור כל קונטיינר שתרצו לעדכן:

ובשורה הבאה, תחליפו את הפורט לזה שתרצו:

חלק ב' – התקנת הסקריפט כשירות שיעלה עם עליית השרת

על מנת שהשירות יעבוד תמיד ברקע ויעלה עם הדלקת השרת יש לרשום אותו כ service במערכת. לצורך כך כתבו את הפקודה הבאה:

והדביקו פנימה את קטע הקוד הבא:

החליפו את [your user] במשתמש שלכם. הוא המשתמש שתחתיו ירוץ השירות.
שמרו את הקובץ וצאו מהעורך.

כעת, כתבו את הפקודות הבאות כדי לרשום את השירות כשרות מערכת ולהפעיל אותו:

חלק ג' – חיבור בין הנוטיפיקציה אל ה service

כפי שציינתי בתחילת המדיך, על מנת לאפשר את העדכון האוטומטי צריך לבצע שימוש גם ב Service וגם בקונטיינר שידע לשלוח את ההתראות. לצורך כך, יש להוסיף לקונטיינר של Ouroboros אפשרות לשלוח json אל הסרביס שזה הרגע יצרנו. לצורך כך, פתחו את קובץ ה docker-compose.yaml ושנו את ההגדרה של ה notification שתראה כך:

כאשר:

  • IP – כתובת ה IP של השרת שעליו מותקן ה Service.
  • Port – הפורט אשר הגדרתם בקובץ ה dockersvc.py:

בהצלחה!

Be the first to comment

Leave a Reply

כתובת האימייל שלך לא תפורסם


*