פיתוח אפליקציה ב-Go

ציון גרסת Go

כברירת מחדל, ה-buildpack של Go משתמש בגרסה היציבה והעדכנית ביותר של המהדר (compiler) ב-Go. אם באפליקציה שלכם דרושה גרסה ספציפית, תוכלו ליצור מגבלת semver על ידי משתנה הסביבה GOOGLE_GO_VERSION וכך להשפיע על בחירת הגרסה הזמינה של Go.

pack build sample-go --builder=gcr.io/buildpacks/builder \
  --env GOOGLE_GO_VERSION="17.x.x"

דגלים של הידור

ה-buildpack של Go יוצר קובץ הפעלה מתוך קוד המקור של האפליקציה באמצעות הפקודה go build command. כדי להגדיר את ההתנהגות של ה-build, אפשר להשתמש במשתני הסביבה הבאים:

  • GOOGLE_BUILDABLE מציין את הנתיב ליצירת החבילה. לדוגמה: הדגל ./maindir של Go ייצור את החבילה ברמה הבסיסית (root) ב-maindir.

  • GOOGLE_CLEAR_SOURCE השמטת קוד המקור מקובץ האימג' של האפליקציה. אם האפליקציה תלויה בקבצים סטטיים כמו תבניות של Go, הגדרת המשתנה הזה עלולה לגרום לבעיות בהתנהגות של האפליקציה. לדוגמה: הדגלים 1,‏ True,‏ true יגרמו לניקוי קוד המקור.

  • GOOGLE_GOGCFLAGS מועברים אל go build ואל go run בתור -gcflags ללא פרשנות. לדוגמה: הדגל all=-N -l מאפשר ניתוח של מרוץ תהליכים ומשנה את האופן שבו נתיבי המקור מתועדים בקובץ הבינארי.

  • GOOGLE_GOLDFLAGS מועברים לפקודת build ופקודת run של Go בתור -ldflags ללא פרשנות. לדוגמה: הדגל -s -w משמש להסרה ולהקטנה של גודל בינארי.

ניהול של יחסי התלות

אנחנו ממליצים להשתמש במודולים של Go כדי לנהל את יחסי התלות באפליקציה שלכם ב-Go. ה-buildpack של Go משתמש בפקודה go build כדי ליצור את האפליקציה, ולכן התהליך הזה תואם להתנהגות של Go. כדי לוודא שהאפליקציה שלכם משתמשת במצב מבוסס-מודול, יש לכלול את הקובץ go.mod ברמה הבסיסית (root) של האפליקציה.

יחסי תלות של יצירת עותק מקוד של צד שלישי (vendoring)

בתהליך של יצירת עותק מקוד של צד שלישי (vendoring) מעתיקים את החבילות שהאפליקציה שלכם משתמשת בהן לספריית האפליקציות, במקום להוריד מודולים מהמקור שלהם בזמן תהליך ה-build. ‏Go מספק את הפקודה build שמורידה את החבילות שהאפליקציה צריכה לספרייה בשם vendor בתיקיית שורש של האפליקציה.

הגדרת נקודת הכניסה לאפליקציה

כברירת מחדל, ה-buildpack של Go מגדיר את נקודת הכניסה לקונטיינר של האפליקציה כך שתפעיל את קובץ ההפעלה main שנוצר מקוד המקור של האפליקציה. אם אתם צריכים לשנות את התנהגות ברירת המחדל הזאת, תוכלו לספק קובץ Procfile או להעביר את משתנה הסביבה GOOGLE_ENTRYPOINT.

משתני סביבה

ה-buildpack של Go מאפשר להתאים אישית את הקונטיינר על ידי משתני הסביבה הבאים

GO

מידע נוסף זמין במסמכי התיעוד של Go, בקטע משתני סביבה.

לדוגמה: הפונקציה GOFLAGS=-flag=value מעבירה את -flag=value לפקודות go.