שימוש ב-builder ספציפי

Builders הן גרסאות של קובצי אימג' שמכילים את כל הרכיבים הדרושים כדי ליצור קונטיינר שאפשר להריץ. כל גרסת builder מבוססת על קובץ אימג' בסיסי להפצה לפי מערכת הפעלה ספציפית, למשל Ubuntu 22, ותומך בכמה גרסאות בהתאם לשפת התכנות.

יכול להיות שתצטרכו להתאים אישית את גרסת ה-build במקרים הבאים:

  • אם יש תלות במערכת הפעלה ספציפית שזמינה רק בגרסת build מסוימת.
  • אם יש צורך בגרסה ספציפית של שפת תכנות שזמינה רק בגרסת builder מסוימת.

גרסאות build מקומיות

כדי לעבוד עם גרסאות build מקומיות צריך להתקין את Pack CLI ואת Docker.

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

  1. מתקינים את Docker Community Edition (CE)‎ בתחנת העבודה. ‏Docker משמש את pack ליצירת קובצי אימג' של OCI.
  2. מתקינים את Pack CLI.
  3. מתקינים את הכלי Git source control כדי שתהיה אפשרות לטעון אפליקציות לדוגמה מ-GitHub.

ציון גרסת ה-build באמצעות pack

תוכלו להוסיף את הדגל --builder לפקודת ה-pack כדי לציין את גרסת ה-build שבה אתם רוצים להשתמש:

pack build SERVICE_IMAGE_NAME --builder=BUILDER_IMAGE_URL

מחליפים את:

  • BUILDER_IMAGE_URL בכתובת ה-URL של ה-builder. לדוגמה: gcr.io/buildpacks/builder:google-24
  • SERVICE_IMAGE_NAME בשם שבחרתם לקובץ האימג' של האפליקציה.

מידע נוסף על הפקודה pack זמין במסמכי התיעוד של CLI.

ציון גרסת ה-build באמצעות project.toml

כשאתם עובדים עם pack, אפשר להשתמש במתאר פרויקט (project.toml) של buildpacks כדי להגדיר ה-builder.

  1. בתיקיית השורש של האפליקציה, יוצרים קובץ בשם project.toml עם ההגדרות הבאות:
    [build]
    builder = "BUILDER_IMAGE_URL"
  2. מריצים את הפקודה 'pack' כדי ליצור את האפליקציה:
    pack build SERVICE_IMAGE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • BUILDER_IMAGE_URL: כתובת ה-URL של ה-builder, לדוגמה, gcr.io/buildpacks/builder:google-24
  • SERVICE_IMAGE_NAME: השם שבחרתם לקובץ האימג' של האפליקציה.

פיתוח גרסאות build מרחוק

כדי להשתמש ב-builder ספציפי ב-Cloud Build אתם יכולים להוסיף את הדגל --pack בזמן שליחת הפרויקט.

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

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build and Artifact Registry APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  5. התקינו את ה-CLI של Google Cloud.

  6. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  7. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Build and Artifact Registry APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  11. התקינו את ה-CLI של Google Cloud.

  12. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  13. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  14. מוודאים שלפרויקט Google Cloud יש גישה למאגר קובצי אימג' של קונטיינר.

    כדי להגדיר גישה למאגר Docker ב-Artifact Registry:

    1. יוצרים מאגר Docker חדש באותו מיקום של הפרויקט Google Cloud .
      gcloud artifacts repositories create REPO_NAME \
      --repository-format=docker \
      --location=REGION --description="DESCRIPTION"
      מחליפים את:
      • REPO_NAME בשם שבחרתם למאגר ב-Docker.
      • REGION עם המיקום בפרויקט או במיקום הקרוב ביותר למיקום הפרויקט. Google Cloud
      • DESCRIPTION בתיאור כלשהו.

      לדוגמה, כדי ליצור מאגר docker ב-us-west2 שהתיאור שלו הוא 'Docker repository', מריצים את הפקודה:

      gcloud artifacts repositories create buildpacks-docker-repo --repository-format=docker \
      --location=us-west2 --description="Docker repository"
    2. מוודאים שהמאגר נוצר:
      gcloud artifacts repositories list

      השם שבחרתם למאגר Docker אמור להופיע ברשימה.

בניית האפליקציה באמצעות builder ספציפי

  1. שולחים את קוד המקור של האפליקציה ל-Cloud Build באמצעות gcloud:
    gcloud builds submit --pack builder=BUILDER_IMAGE_URL,image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/SERVICE_IMAGE_NAME

    מחליפים את:

    • BUILDER_IMAGE_URL בכתובת ה-URL של ה-builder. לדוגמה: gcr.io/buildpacks/builder:google-24
    • LOCATION בשם האזור של מאגר הקונטיינרים. לדוגמה: us-west2-docker.pkg.dev
    • PROJECT_ID במזהה הפרויקט. Google Cloud
    • REPO_NAME בשם המאגר ב-Docker.
    • SERVICE_IMAGE_NAME בשם של קובץ אימג' של קונטיינר שיצרתם.

    מידע נוסף על הפקודה submit זמין במסמכי התיעוד של Cloud Build.

  2. מוודאים שהאפליקציה לדוגמה פורסמה ב-REPO_NAME:
    gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME

    מחליפים את:

    • LOCATION בשם האזור של מאגר הקונטיינרים. לדוגמה: us-west2-docker.pkg.dev
    • PROJECT_ID במזהה הפרויקט. Google Cloud
    • REPO_NAME בשם המאגר ב-Docker.

פריסה מקוד המקור באמצעות Cloud Run

כשאתם פורסים מקוד המקור עם Cloud Run, אפשר להשתמש בקובץ מתאר פרויקט (למשל project.toml) של buildpacks כדי להגדיר את ה-builder.

  1. מאתחלים קובץ project.toml בתיקיית השורש של האפליקציה ומדביקים בו את ההגדרות הבאות:
    [build]
    builder = "BUILDER_IMAGE_URL"
  2. פורסים את האפליקציה מקוד המקור
    gcloud run deploy --source . SERVICE_IMAGE_NAME

מחליפים את:

  • BUILDER_IMAGE_URL בכתובת ה-URL של ה-builder. לדוגמה: gcr.io/buildpacks/builder:google-24
  • SERVICE_IMAGE_NAME בשם של קובץ אימג' של קונטיינר שיצרתם.