יצירת אפליקציה עם זמן ריצה מותאם אישית בסביבה הגמישה של App Engine

מזהה אזור

REGION_ID הוא קוד מקוצר ש-Google מקצה על סמך האזור שבוחרים כשיוצרים את האפליקציה. הקוד לא תואם למדינה או למחוז, למרות שחלק ממזהי האזורים עשויים להיראות דומים לקודים נפוצים של מדינות ומחוזות. באפליקציות שנוצרו אחרי פברואר 2020, המחרוזת REGION_ID.r כלולה בכתובות ה-URL של App Engine. באפליקציות קיימות שנוצרו לפני התאריך הזה, מזהה האזור הוא אופציונלי בכתובת ה-URL.

סביבות ריצה בהתאמה אישית מאפשרות לכם ליצור אפליקציות שפועלות בסביבה שמוגדרת על ידי Dockerfile. באמצעות Dockerfile, אפשר להשתמש בשפות ובחבילות שלא נכללות ב-Google Cloud ולהשתמש באותם משאבים ובאותם כלים שמשמשים בסביבה הגמישה של App Engine.

במדריך הזה להתחלה מהירה, מפעילים שרת אינטרנט nginx ב-App Engine באמצעות סביבת ריצה בהתאמה אישית.

לפני שמתחילים

לפני שמריצים את האפליקציה לדוגמה במדריך הזה למתחילים, צריך להגדיר את הסביבה וליצור פרויקט חדש ב-App Engine: Google Cloud

  1. כדי ליצור פרויקט חדש באמצעות מסוף Google Cloud Google Cloud :

    1. פותחים את המסוף Google Cloud :

      לדף Projects

    2. לוחצים על יצירת פרויקט ונותנים שם לפרויקט החדש Google Cloud .

    3. מפעילים את החיוב בפרויקט החדש ב- Google Cloud על ידי יצירת חשבון חדש לחיוב או הגדרת חשבון קיים:

      לדף החיוב

  2. מורידים ומתקינים את ה-CLI של Google Cloud ואז מפעילים את ה-CLI של gcloud:

    הורדת ה-SDK

  3. מריצים את הפקודה gcloud הבאה כדי ליצור אפליקציית App Engine ולציין באיזה אזור גיאוגרפי רוצים שהאפליקציה תפעל:

    gcloud app create
    
  4. בגלל שינויים בהתנהגות ברירת המחדל של Cloud Build בנוגע לשימוש בחשבונות שירות בפרויקטים חדשים, ושינויים במדיניות הארגון שמוגדרת כמאובטחת כברירת מחדל, יכול להיות שתצטרכו להקצות תפקידים נוספים לחשבון השירות שמשמש לפריסה. מידע נוסף על מתן תפקידים ספציפיים זמין במדריך לפתרון בעיות.

המיקומים של App Engine

‫App Engine הוא אזורי, כלומר התשתית שמריצה את האפליקציות שלכם ממוקמת באזור ספציפי, ו-Google מנהלת אותה כך שהיא זמינה באופן יתירתי בכל התחומים באזור הזה.

הקריטריונים העיקריים לבחירת האזור שבו האפליקציות יפעלו הם זמן האחזור, הזמינות והעמידות. בדרך כלל אפשר לבחור את האזור הקרוב ביותר למשתמשים באפליקציה, אבל כדאי גם לבדוק איפה App Engine זמין ואיפה מוצרים ושירותים אחרים שבהם האפליקציה משתמשת. שימוש בשירותים בכמה מיקומים יכול להשפיע על זמן האחזור של האפליקציה וגם על התמחור שלה.Google Cloud

אחרי שמגדירים את האזור של אפליקציה, אי אפשר לשנות אותו.

אם כבר יצרתם אפליקציית App Engine, תוכלו לראות את האזור שלה באחת מהדרכים הבאות:

הורדת אפליקציית Hello World

  1. בוחרים באחת מהאפשרויות הבאות כדי להוריד את אפליקציית הדוגמה Hello World מ-GitHub למחשב המקומי:

    • משכפלים את אפליקציית הדוגמה Hello World מהמאגר הבא:

      git clone https://github.com/GoogleCloudPlatform/appengine-custom-runtimes-samples
      
    • מורידים את הדוגמה כקובץ ZIP ומחלצים אותה לספרייה מקומית.

  2. עוברים לספרייה nginx שבה נמצא קוד לדוגמה, למשל:

    cd appengine-custom-runtimes-samples/nginx
    

הרצת Hello World במחשב המקומי

כדי לבדוק את האפליקציה לדוגמה, צריך להוריד ולהתקין את Docker, ואז להריץ את קובץ ה-Hello World container במחשב המקומי.

אין כאן שלבים ספציפיים ל-App Engine, כך שתוכלו לבדוק את האפליקציה לדוגמה באמצעות הכלים והגישה שאתם מעדיפים.

פריסת Hello World ב-App Engine

כדי לפרוס את האפליקציה לדוגמה ב-App Engine:

  1. מהספרייה שבה נמצאים הקבצים app.yaml ו-Dockerfile, מריצים את הפקודה הבאה:

    gcloud app deploy
    

    מידע על דגלים אופציונליים

  2. כדי לראות את האפליקציה פועלת בכתובת https://PROJECT_ID.REGION_ID.r.appspot.com, מריצים את הפקודה הבאה כדי להפעיל את הדפדפן:

    gcloud app browse
    

דיווחים נפוצים של פקודת gcloud

  • כוללים את הדגל --version כדי לציין מזהה שמזהה באופן ייחודי את הגרסה הזו של האפליקציה, אחרת המערכת תיצור מזהה בשבילכם. לדוגמה: --version [YOUR_VERSION_ID]
  • כוללים את הדגל --project כדי לציין מזהה פרויקט חלופי ב- Google Cloud , שונה מזה שהוגדר כברירת מחדל בכלי gcloud. דוגמה: --project [YOUR_PROJECT_ID]

דוגמה:

gcloud app deploy --version pre-prod-5 --project my-sample-app

במאמר בדיקה ופריסה של האפליקציה מוסבר איך לפרוס את האפליקציה משורת הפקודה. רשימה של כל הדגלים של הפקודות מופיעה במאמר בנושא gcloud app deploy.

הסרת המשאבים

כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

המאמרים הבאים

מידע נוסף על קובצי Docker זמין בהפניה לקובץ Docker.

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

סקר קוד

האפליקציה הכי פשוטה שאפשר ליצור ב-App Engine היא Hello World, כי היא יוצרת קונטיינר יחיד שמריץ רק שירות אחד וגרסה אחת. בקטע הזה מתואר כל אחד מהקבצים של האפליקציה בפירוט.

app.yaml

מציינת את ההגדרה של האפליקציה. קובץ app.yaml חייב להיות באותה תיקייה כמו קובץ Dockerfile.

runtime: custom
env: flex

הערך runtime: custom מציין ל-App Engine לחפש Dockerfile שיגדיר את תמונת זמן הריצה, והערך env: flex מציין שאתם מבצעים פריסה בסביבה הגמישה.

מידע נוסף זמין במאמר בנושא app.yaml.

Dockerfile

הקובץ הזה מגדיר את קבוצת ההוראות שמשמשות ליצירת קובץ אימג' של Docker עבור הקונטיינר של האפליקציה לדוגמה. קובץ Dockerfile צריך להיות באותה תיקייה כמו קובץ app.yaml. קובץ Dockerfile מתקין את שרת האינטרנט nginx ומעתיק כמה הגדרות בסיסיות:

# The standard nginx container just runs nginx. The configuration file added
# below will be used by nginx.
FROM nginx

# Copy the nginx configuration file. This sets up the behavior of nginx, most
# importantly, it ensure nginx listens on port 8080. Google App Engine expects
# the runtime to respond to HTTP requests at port 8080.
COPY nginx.conf /etc/nginx/nginx.conf

# create log dir configured in nginx.conf
RUN mkdir -p /var/log/app_engine

# Create a simple file to handle health checks. Health checking can be disabled
# in app.yaml, but is highly recommended. Google App Engine will send an HTTP
# request to /_ah/health and any 2xx or 404 response is considered healthy.
# Because 404 responses are considered healthy, this could actually be left
# out as nginx will return 404 if the file isn't found. However, it is better
# to be explicit.
RUN mkdir -p /usr/share/nginx/www/_ah && \
    echo "healthy" > /usr/share/nginx/www/_ah/health

# Finally, all static assets.
ADD www/ /usr/share/nginx/www/
RUN chmod -R a+r /usr/share/nginx/www

הפקודה FROM יוצרת קובץ אימג' בסיסי באמצעות קובץ האימג' הרשמי של Docker לשרת האינטרנט nginx.

באמצעות קובץ Dockerfile הזה, קובץ אימג' של קונטיינר יכיל את nginx וכל התוכן בספרייה www/ יהיה זמין לאפליקציה.

אפליקציית הדוגמה Hello World כוללת גם את הקובץ nginx.conf, שמכיל את פרטי התצורה הבסיסיים של nginx, וגם את הקובץ index.html, שמשמש כדף בסיס של שרת האינטרנט nginx.