מישהו מכיר את השרת MyHost?
-
@איל-משולש הנה הסבר מפורט יותר של ג׳מיני:
בטח, בוא נעשה סדר במושגים. Dockerfile הוא בסופו של דבר "מתכון" – קובץ טקסט פשוט שמכיל סדרת הוראות לבניית אימג' (Image) של הדוקר שלך. הוא מגדיר הכל: החל ממערכת ההפעלה, דרך התקנת הספריות ועד הפקודה שמריצה את השרת בסוף.
למה להשתמש ב-Dockerfile ב-Render?
כשאתה משתמש בהגדרות המוכנות מראש של Render (כמו "Node runtime" או "Python runtime"), אתה מוגבל למה ש-Render מציעים "מהקופסה". שימוש ב-Dockerfile פותח לך דלת לגמישות מלאה:
1. שליטה מוחלטת בסביבה
במקום לקוות שגרסת ה-Python או ה-Node שאתה צריך מותקנת, ב-Dockerfile אתה קובע הכל. צריך ספריית מערכת ספציפית לעיבוד תמונות (כמו
ffmpegאוImageMagick)? ב-Dockerfile אתה פשוט מוסיף שורת התקנה. בהגדרות המובנות, זה הרבה יותר מסובך (ולפעמים בלתי אפשרי).2. קונסיסטנטיות (עובד אצלי = עובד בשרת)
היתרון הכי גדול של דוקר הוא שהסביבה ב-Render תהיה זהה לחלוטין לסביבה שבה פיתחת על המחשב שלך. אין הפתעות של "גרסת ה-Linux בשרת שונה מה-Mac שלי".
3. מעבר קל בין ספקים (No Vendor Lock-in)
אם מחר תחליט ש-Render יקרים מדי ותרצה לעבור ל-AWS, Google Cloud או DigitalOcean, לא תצטרך לשנות הגדרות פריסה. ה-Dockerfile שלך הוא סטנדרט תעשייתי שרץ בכל מקום.
4. אופטימיזציה של ביצועים
באמצעות טכניקה שנקראת Multi-stage builds, אתה יכול לבנות את האפליקציה (למשל לקמפל קוד) ואז להעתיק רק את הקבצים המוכנים לאימג' סופי ורזה מאוד. זה גורם לפריסה ב-Render להיות מהירה יותר ולצרוך פחות זיכרון.
השוואה מהירה
מאפיין הגדרות מוכנות (Native Runtimes) פריסה עם Dockerfile קלות הקמה מהירה מאוד (בלחיצת כפתור) דורשת כתיבת קובץ הגדרות גמישות מוגבלת למה ש-Render תומך מקסימלית (כל שפה, כל ספרייה) ניידות קשה לעבור ספק בקלות קלה מאוד (Standard Docker) דיבגינג תלוי בלוגים של Render ניתן להריץ ולבדוק לוקאלית בדיוק אותו דבר בשורה התחתונה: אם האפליקציה שלך סטנדרטית לגמרי, ההגדרות המוכנות יחסכו לך זמן. אם אתה צריך "קצת מעבר" או רוצה שקט נפשי לגבי העתיד – Dockerfile הוא הדרך הנכונה.
-
@CUBASE כשאתה עושה פריסה אתה בוחר בפייתון? מה אתה בוחר שם?
נ.ב. כשאר לא יודעם כלום והכל מ AI, לפעמים יש דברים שפשוט לא יודעים לשאול
-
@איל-משולש אם יש Dockerfile בתיקיית השורש של המאגר אז Render מזהה את זה אוט' ובוחר בזה,
אם הקובץ נמצא בתיקייה פנימית אז בוחרים איפה ה-Dockeerfile נמצא -
@CUBASE חבל שלא ידעתי עד היום, PHP אני קצת מכיר ויותר קל לי להתעסק איתו
-
@איל-משולש אף פעם לא מאוחר מדי

-
@CUBASE אף פעם לא מאוחר חוץ מסוף בין הזמנים

-
@CUBASE אגב כל הקודים שלך רצים כל רבע שעה?, מעניין אותי באמת למה חסמו אותי
בגלל זה פיתחתי קוד שלא ירוץ כל רבע שעה אלא משתנה פעם ברבע שעה מקס' אבל בצורה אקראית (עם פרמטרי משתנים) -
@איל-משולש למה אתה מתכוון רצים כל רבע שעה? אתה מתכוון לקוד אחד שרץ כל רבע שעה כדי להשאיר את השרת חי?
-
@CUBASE
כן מה אתה עושה אם זה? -
@YONA אני מנטר את השרת כל רבע שעה באמצעות UptimeRobot, כך גם ברגע שהשרת לא עובד אני מקבל התראה מייד למייל שהשרת לא זמין (בד"כ אחרי כמה דקות מתקבל מייל שהשרת חזר לעבוד)
-
@CUBASE מה זה הדבר הזה?
אני מריץ סקריפט שפשוט מפעיל אותו, מה רע בזה -
@איל-משולש אתה מריץ סקריפט בתוך השרת?
-
@CUBASE סתם מעניין למה לא טוב ורסל בשילוב עם גיטהאב?
-
@CUBASE לא אני מריץ סקריפט פשוט של גוגל, ששולח קריאות לכל המושדלים שלי כל רבע שעה
-
@יב ?????
-
@איל-משולש התכוונתי לזה
vercel.com -
@יב הנה התשובה למה:
חשוב להבין את ההבדל המהותי כאן: Vercel אינה פלטפורמה שמיועדת להרצת PHP כשרת Backend קלאסי, בעוד ש-Render תומכת בזה בצורה טובה יותר.
להלן ניתוח של השאלות שלך בהתייחס להרצת קוד צד-שרת:
1. שעות ריצה ו-CPU בתוכנית החינמית
המודלים של שתי הפלטפורמות שונים לחלוטין:
- Render: בתוכנית החינמית, ה-Backend שלך (Web Service) נכנס ל"שינה" (Sleep) לאחר תקופת חוסר פעילות. אם תפעיל PHP כ-Web Service, הוא לא ירוץ 24/7 אלא יתעורר רק כשמישהו ניגש לכתובת. אין מגבלה נוקשה של "שעות ריצה" במובן של CPU, אך האתר יחווה השהיה קלה (Cold Start) בכל פעם שהוא מתעורר.
- Vercel: פועלת בשיטת Serverless Functions. אין כאן "שעות ריצה" במובן הקלאסי, אלא מכסות של Execution Time. בתוכנית החינמית, יש מגבלה על כמות ה-Requests ועל זמן הריצה המצטבר של כל פונקציה.
- הערה טכנית קריטית: כדי להריץ PHP ב-Vercel, תצטרך להשתמש ב-Custom Runtime (כמו
vercel-php), מה שהופך את כל הפרויקט למורכב יותר ולא תמיד יציב כמו הרצה בשרת ייעודי. Vercel מותאמת בבסיסה ל-Node.js/Edge Runtime.
- הערה טכנית קריטית: כדי להריץ PHP ב-Vercel, תצטרך להשתמש ב-Custom Runtime (כמו
2. תת-דומיין מותאם אישית
- Render: כברירת מחדל, האתר מקבל כתובת בסיומת
onrender.com(למשל:my-app.onrender.com). השם תלוי בשם השירות שנתת ב-Dashboard. - Vercel: כברירת מחדל, האתר מקבל כתובת בסיומת
vercel.app(למשל:my-app.vercel.app).
בשתי הפלטפורמות ניתן להגדיר Custom Domain (דומיין אישי כמו
example.com) בתוכנית החינמית ללא תשלום נוסף.השורה התחתונה עבור פרויקט PHP שלך:
מכיוון שאתה מציין שאתה משתמש ב-Render עבור קוד צד-שרת (Backend), אני ממליץ להישאר עם Render.
- למה? ב-Render אתה מקבל שרת שבו ה-PHP רץ בסביבה טבעית (בדרך כלל דרך Docker או Buildpack). המעבר ל-Vercel ידרוש ממך לבצע התאמות לקוד כדי שיתאים ל-Serverless Functions (מגבלות זיכרון, מגבלות זמן ריצה של פונקציה, וחוסר עקביות ב-Filesystem), וזה עלול לשבור לוגיקה קיימת של PHP.
המלצה: אם הבעיה שלך ב-Render היא ה-"Sleep" (ההמתנה עד שהאתר מתעורר), הפתרון שציינת בעבר (שימוש ב-Uptimerobot) הוא הדרך הנכונה להתמודד עם זה בחינם, במקום לעבור פלטפורמה.
האם יש תקלה ספציפית שנתקלת בה עם PHP ב-Render שגרמה לך לשקול מעבר?
-
@CUBASE מי אמר שצריכים להשתמש ב PHP? תשתתמש בJS!
ולגבי מערכת טלפונית (שלא דורש שמירת נתונים בזיכרון) ורסל אולי עדיף? (שואל, כי אני לא מעז ליטול דופי בידיעותיך, שהם רבו ממני...)
אני חושב, שזה יותר מהיר מrender (כל מילישניה בהאזנה על הקו נראה כנצח). / כמעט ואין סיכון להשבתה / פרוס גלובלי על פני העולם, וכמעט ואין עומס על השרת החינמי. -
- חשבתי פעם להתחיל ללמוד, לא מצאתי זמן..
- גם ב-render א"א לשמור נתונים על הזיכרון (למרות שזה כן נצרך הרבה פעמים, נעזרים בקומבינות)
- לא יודע, אין לי כח לכאבי ראש האלה, אם תראה לי שהצלחת לפתוח שרת PHP ב-Vercel - זה ישכנע אותי לנסות.
-
@CUBASE אני עובד המון עם ורסל. - אבל רק אם JS (משום מה התחברתי לזה יותר מפיתון וכדומה..).
בכל אופן, אני לא משכנע, רק חששתי על עצמי אולי אני מפספס משהו, אבל אם זה עובד לך מעולה - אז באמת אין טעם לשנות!