היום למדתי: למה לשים מרכאות מסביב לפורטים ב docker-compose
07/05/2024
בואו נשחק עם רובי, כי היא קלה ויש תמיכה מובנית ב YAML. זאת התוכנית:
require 'yaml'
require 'pp'
data = YAML.safe_load(<<-END
apache:
image: httpd:latest
container_name: my-apache-app
ports:
- 80:80
- 24:42
volumes:
- ./website:/usr/local/apache2/htdocs
END
)
pp data
אפשר לראות אותו לייב ב URL הזה: https://tinyurl.com/mwk97ybd
עכשיו התוכנית בסך הכל לוקחת YAML, קוראת אותו ומדפיסה אותו כמילון. יכולים לנחש מה יהיה במפתח ports של המילון? רמז: לא מה שאתם חושבים. זה נראה ככה:
"ports"=>["80:80", 88920],
אני מבין מאיפה הגיע ה 80:80, אבל מה הסיפור עם ה 88920? מה קרה ל 24:42
? נו התשובה בכותרת הפוסט. כשקוראים YAML שיש בו שני מספרים נקודותיים ואז עוד שני מספרים המפענח חושב שזה תיאור זמן (שעות ודקות). אז הוא מכפיל את 24 ב 60 ומוסיף 42 וכך מקבל 1482, ואז הופך את זה לשניות ומקבל 88920 שזה המספר שאנחנו רואים כאן.
מה עושים? נזכרים ש YAML הוא שדה מוקשים אחד גדול ותמיד כותבים מחרוזות בתוך מרכאות.