זהו נושא דיון מלווה לערך המקורי שב־https://www.tocode.co.il/bundles/docker/lessons/docker-compose-intro
זהו נושא דיון מלווה לערך המקורי שב־https://www.tocode.co.il/bundles/docker/lessons/docker-compose-intro
היי @ynonp, מדוע מספר הגרסה שהזנת בראש ה-docker-compose.yml הוא 3.9?
אם אני מבין נכון, הגרסה האחרונה היא 3.8
[למרות שגם בדף בקישור הנ"ל יש דוגמה עם גרסה 3.9]
בנוסף, האם הבנתי נכון והשדה הזה כבר DEPRECATED ועדיף לוותר עליו?
ומשהו שלא קשור רק לפרק הזה - נראה שפעמים רבות הווידאו והטקסט של הפרק ממש לא זהים - יכול להיות גרסה אחרת של הקוד, הסברים ודוגמאות שונים, וכדומה.
אולי בטקסט אתה מתחיל מבלוג-פוסט שכבר היה מוכן לך מראש ובוידאו לוקח את זה למקום קצת אחר. אולי הנסיבות הן אחרות.
יש לזה יתרונות, אבל פעמים רבות זה מקשה על הפנמת החומר (בקריאה אחרי צפייה) ו/או בשחזור מה שעשית במחשב המקומי שלי.
הי,
לגבי הגירסה זו טעות בתיעוד. הגירסה החדשה ביותר היא 3.9. היה על זה דיון כאן אבל כנראה לא עשו עם זה כלום:
השדה לא deprecated ויש כלים שממש צריכים אותו ולא יעבדו בלעדיו (לדוגמה kompose, אותו נראה בשיעורים על קוברנטיס)
לגבי אי תאימות בין וידאו לטקסט - שיטת העבודה בבניית הקורס היא שאני קודם כותב את הטקסטים לכל השיעורים ואז יושב להקליט. לפעמים בהקלטה דברים פתאום לא נראים לי מספיק ברורים אז אני מקליט כמה גירסאות עד שמגיע להסבר שנראה לי שעובד טוב, ואז חוזר ומתקן את הטקסט כדי שיתאים. יש טעויות וגם אני מפספס דברים, ולפעמים פערים שנראים לי קטנים בין הוידאו לטקסט עדיין פוגעים בהבנה. בקיצור שלח לי בבקשה למייל (ynon שטרודל tocode.co.il) באיזה שיעורים הטקסט והוידאו היו שונים ואני אבדוק את זה
ברשותך @ynonp לא אשלח מייל, כי מזכרוני זה ממש הרבה.
דוגמה מהפרק הזה (מה עושים עד שהסרביסים האחרים עולים) - בטקסט בסיס הנתונים שאתה מציג הוא redis, למרות שבווידאו ציינת ש-redis לא דוגמה טובה לנושא ואתה משתמש שם ב-mongo.
תיקנתי את השיעור שהזכרת עכשיו הטקסט תואם לוידאו (היתה שם גירסה ישנה יותר של הטקסט)
אם אתה נתקל בעוד כאלה אשמח שתכתוב ואעדכן גם אותם
היי ינון, שאלה אולי קצת טפשית אבל בכל זאת. אני חושב שאני מבין כמה ההבדלים בין ה Dockerfile לבין ה docker-compose.yml אבל ממש לא עד הסוף:
נדמה שDockerfile הוא יותר סט של הגדרות ספציפיות שאתה רוצה לשייך לאותו אימג׳ שאתה רוצה לקסטם ובעצם לשמור את ההגדרות והפעולות אם תרצה להריץ אותו שובֿ/אימגים אחרים. ֿלאחר מכן צריך לעשות build כדי לבנות את האימג עצמו, ומשם run כדי ליצור את הcontainer.
docker-compose.yml לעומת זאת, הוא קובץ הגדרות דומה, שבעצם ניתן להריץ אותו עם docker compose up והוא בעצם יוצר את האימגים עצמם + containers. כלומר ההבדל העיקרי הוא שב docker-compose ניתן להריץ כמה containers ו images יחד, בפקודה אחת, לעומת ה dockerfile שבו נעשית קוסטומיזציה לimage ספציפי?
ושאלה נוספת בהקשר הזה - שמעתי דעות לכאן ולכאן, אבל האם ניתן טכנית להשתמש ב docker-compose.yml ללא הDockerfile? או שיש קשר ישיר בינהם בהכרח (ראיתי דוגמא שבה הdocker-compose עושה build לפי הגדרות הdockerfile) אני לא לגמרי רואה סיבה להשתמש ב Dockerfile שיש לנו את הdocker-compose.
סליחה על החפירה ותודה רבה מראש
הי,
אלה שני כלים שונים:
-
דוקר אנג׳ין זה מנוע שיודע להריץ אימג׳ים. בשביל לבנות אימג׳ אנחנו צריכים Dockerfile, שזה קובץ הוראות לבניית אימג׳. עליו מפעילים build ואז את התוצאה אפשר לשלוח ל Docker Engine להרצה. כל החלק הראשון של הקורס לפני שהגענו ל docker compose זה היה עבודה עם דוקר ישירות והרצת אימג׳ים בודדים דרכו.
-
דוקר קומפוז זה כלי אחר שהתפקיד שלו זה לעשות חיים קלים כשבאים להריץ מספר אימג׳ים עם פרמטרים מסוימים. למשל אני יודע שהמערכת שלי צריכה גם אימג׳ של שרת וגם אימג׳ של בסיס נתונים, וכל אחד מהם יש לו את ה volumes שלו ומשתני הסביבה שלו. אז אני יוצר קובץ דוקר קומפוז עם ההגדרות של כל הקונטיינרים והפרמטרים שלהם ויכול להפעיל את כולם או לסגור את כולם במכה אחת.
כדאי לחשוב על זה ש docker compose זה כמו ממשק יותר נוח ל Docker Engine.
לשאלות שלך-
אין בעיה להשתמש ב docker-compose.yml בלי Dockerfile. עשינו את זה בהמון דוגמאות בקורס למשל כאן:
version: "3.9"
services:
app:
image: node:17
working_dir: /app
command: sh -c "npm install && node server-redis.js"
volumes:
- ".:/app"
אני יכול לקחת אימג׳ שמישהו כבר בנה והעלה ל Dockerhub. אבל ברור שבהתחלה כן היה Dockerfile שבנה את האימג׳ node:17, ואת התוצאה של הבניה (כלומר את האימג׳) העלו ל dockerhub, ומשם ה docker compose שלי לוקח אותה.
ניסוח יותר מדויק לשאלה השניה יהיה - ״האם בכלל אי פעם נרצה לבנות אימג׳ לבד, כלומר לכתוב Dockerfile לבד, או שתמיד שווה לקחת אימג׳ קיים מ dockerhub ורק להתאים לו את הפרמטרים של הריצה ב docker-compose״
ופה כמובן שזה תלוי.
כשבונים אימג׳ לבד אנחנו יכולים לקבל המון דברים שאולי אין לנו באימג׳ מדף - אפשר להתקין דברים נוספים שאולי לא מותקנים על האימג׳ מדף או להוריד דברים וככה לקבל אימג׳ יותר קטן. בדרך כלל במצב פיתוח יותר נוח לקחת אימג׳ מוכן מ dockerhub ולהתאים פרמטרים, אבל במעבר לבדיקות ופרודקשן כבר בונים אימג׳ מסודר שעבר אופטימיזציה.