יצירת אפליקציה עם זמן ריצה מותאם אישית בסביבה גמישה של 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. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

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

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

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

בדיקת קוד

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

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.