קובצי האימג' הבסיסיים שהוגדרו מראש שסופקו על ידי Cloud Workstations מכילים רק סביבה מינימלית עם IDE, מסוף Linux בסיסי, כלי שפה ושרת sshd. כדי לזרז את הגדרת הסביבה של תרחישי פיתוח ספציפיים, אתם יכולים ליצור קובצי אימג' של קונטיינרים בהתאמה אישית שמרחיבים את קובצי האימג' הבסיסיים האלה, כדי להתקין מראש כלים ויחסי תלות ולהריץ סקריפטים של אוטומציה.
בנוסף להפעלת כלי לסריקת קונטיינרים כמו Artifact Analysis כדי לבדוק יחסי תלות נוספים שהוספתם, מומלץ להגדיר צינור עיבוד נתונים (pipeline) לקובצי אימג' של קונטיינרים בהתאמה אישית, כדי ליצור מחדש את קובצי האימג' האלה באופן אוטומטי כשקובץ האימג' הבסיסי של Cloud Workstations מתעדכן. אתם אחראים לתחזק ולעדכן את החבילות בהתאמה אישית ואת יחסי התלות שנוספו לתמונות בהתאמה אישית.
לפני שמתחילים
- אתם צריכים מכונה עם כלים ליצירת קובצי אימג' של קונטיינרים כמו Docker, ולהעברת קובצי אימג' ל-Artifact Registry באמצעות Google Cloud CLI. כדי לבצע את השלבים האלה, אתם יכולים להשתמש ב-Cloud Workstations או ב-Cloud Shell Editor, שבהם הכלים האלה מותקנים מראש.
-
בוחרים את קובץ האימג' הבסיסי שבו רוצים להשתמש מתוך רשימת קובצי האימג' הבסיסיים הנתמכים, למשל
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest.לחלופין, אתם יכולים להשתמש בקובץ אימג' של קונטיינר משלכם או בקובצי אימג' של קונטיינרים חיצוניים, לפי ההוראות שבמאמר שימוש בקובץ אימג' של קונטיינר משלכם.
-
יוצרים תיקייה כמו
CUSTOM_IMAGE_FOLDERוקובץ Docker בתוך התיקייה הזו, שמרחיב את תמונת הבסיס שנבחרה, כמו בדוגמאות הבאות.
מבנה קובץ האימג' הבסיסי של Cloud Workstations
תמונות הבסיס של Cloud Workstations חולקות את המבנה המוגדר הבא:
- קובץ נקודת הכניסה של תמונת הבסיס מוגדר ל-
/google/scripts/entrypoint.sh. בזמן ההפעלה, קובצי אימג' בסיסיים מריצים קבצים ב-
/etc/workstation-startup.d/*בסדר לקסיקוגרפי כדי לאתחל את סביבת העבודה.אלה הקבצים וההתנהגות שלהם:
-
000_configure-docker.sh: מגדיר ומריץ את Docker בתוך תחנת העבודה.
010_add-user.sh: יוצר את משתמש ברירת המחדל ב-Cloud Workstations.מכיוון שדיסק האחסון המתמיד (persistent disk) מחובר באופן דינמי לקונטיינר, צריך להוסיף משתמשים בזמן ההפעלה של תחנת העבודה, ולא בקובץ Docker.
020_start-sshd.sh: הפעלת השירותsshdבקונטיינר.
030_customize-environment.sh: הפעלה של/home/user/.workstation/customize_environmentבתורuser.
110_start-$IDE.sh: הפעלת ה-IDE של קובץ האימג'.
-
ב-Cloud Workstations, קובצי האימג' של Docker נשמרים בספריית הבית ב-
/home/.docker_dataכדי שהם יישמרו בין הסשנים.
כדי להוסיף פונקציונליות נוספת במהלך ההפעלה של תחנת העבודה, מוסיפים את הסקריפטים לספרייה /etc/workstation-startup.d/:
כברירת מחדל, סקריפטים בספרייה הזו פועלים כשורש. כדי להריץ את הסקריפטים כמשתמש אחר, משתמשים בפקודה
runuser.הסקריפטים מופעלים בסדר לקסיקוגרפי, לכן מומלץ להוסיף בתחילת הסקריפטים מספר תלת-ספרתי שגדול מ-200.
לחלופין, אם אתם לא רוצים להרחיב קובץ אימג' של סביבת עבודה, אתם יכולים ליצור סקריפט customize_environment בספריית הבית.
שינויים בספריית הבית
כשהגדרת תחנת העבודה מציינת ספריית בית לאחסון מתמיד (זוהי פעולת ברירת המחדל), דיסק לאחסון מתמיד שמגבה את ספריית הבית מצורף באופן דינמי לקונטיינר בזמן הריצה. התהליך הזה מחליף את השינויים שבוצעו בספרייה /home בזמן פיתוח ה-build של קובץ האימג' של הקונטיינר.
כדי לשמור את העדכונים, צריך לשנות את הספרייה /home בזמן הריצה של הקונטיינר על ידי הוספת סקריפט בספרייה /etc/workstation-startup.d, או על ידי הוספת הגדרה לכל משתמש בספרייה /etc/profile.d.
כדי לזרז את התהליך, כדאי להריץ את סקריפט ההגדרות כתהליך ברקע (מוסיפים את התו & בסוף הפקודה) כדי לא לחסום את ההפעלה של הקונטיינר.
דוגמאות להגדרות של זמן build שצריך להעביר לזמן ריצה של קונטיינר:
- הגדרת
gitלכל משתמש gitמאגרים ששוכפלו בספריית הבית- הגדרת משתמש ישירה, כמו הצבת קבצים בספרייה
$HOME/.config - יצירת משתמש
יצירה ושינוי של משתמשים
מכיוון שדיסק אחסון מתמיד (persistent disk) מתחבר באופן דינמי לקונטיינר בזמן הריצה, צריך להוסיף משתמשים בזמן ההפעלה של תחנת העבודה, ולא בקובץ Docker. כדי לשנות משתמשים או ליצור משתמשים נוספים, מומלץ לעדכן את /etc/workstation-startup.d/010_add-user.sh או ליצור סקריפט משלכם שפועל בזמן ההפעלה.
בנוסף, אפשר לשנות את פרופיל ברירת המחדל של bash למשתמשים על ידי עדכון הקבצים ב-/etc/profile.d.
עדכון מפתחות Secure APT שהוגדרו מראש
קובצי האימג' הבסיסיים של Cloud Workstations מותקנים מראש עם מספר כלים שהתקבלו ממאגרים שונים של צד שלישי באמצעות Secure APT. כחלק מתהליך ההתקנה, המפתחות הציבוריים שבעלי המאגר מספקים מיובאים באמצעות gpg ומוצבים בקבצים נפרדים ב-/usr/share/keyrings/. הקבצים האלה מקושרים מקובצי list תואמים בקטע /etc/apt/sources.list.d/.
כך apt יכול לאמת את התקינות של מאגר נתון בזמן אינטראקציה איתו.
לפעמים בעלים של מאגרים של צד שלישי מחליטים לשנות את המפתח הציבורי שמשמש לאימות התקינות של המאגר שלהם. במקרה כזה, apt מציג שגיאה כשמנסים לבצע פעולה במאגר. כדי לפתור את הבעיה הפוטנציאלית הזו, אתם יכולים להשתמש ב-/google/scripts/refresh-preinstalled-apt-keys.sh, שמקבל את הגרסאות העדכניות ביותר של מפתחות ציבוריים שהותקנו מראש ומייבא אותם מחדש.
אפשר גם להריץ את הסקריפט הזה ישירות ב-Dockerfile בהתאמה אישית לפני שמריצים את apt-get update:
# Refresh the preinstalled APT keys
RUN /google/scripts/refresh-preinstalled-apt-keys.sh
RUN apt-get update
הצגת רשימה של גרסאות ה-IDE המותקנות
בחלק מתמונות הבסיס של Cloud Workstations מותקנת מראש סביבת פיתוח משולבת (IDE). לנוחותכם, אפשר להשתמש בסקריפט /google/scripts/preinstalled-ide-versions.sh שכולל את השם ופרטי הגרסה של סביבות הפיתוח המשולבות שמותקנות בתמונה.
השבתת הרשאות הבסיס (root) של sudo
למשתמש ברירת המחדל של תחנת העבודה יש הרשאות גישה לרמה הבסיסית (root) של sudo בקונטיינרים האלה. כדי להשבית את גישת הבסיס לקונטיינר של Docker, מגדירים את משתנה הסביבה CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO לערך true כשיוצרים את הגדרות תחנת העבודה.
כדי להגדיר את משתנה הסביבה הזה דרך מסוף Google Cloud כשיוצרים את הגדרת תחנת העבודה, פועלים לפי השלבים הבאים:
- כשיוצרים את הגדרות סביבת העבודה, צריך להשלים את ההגדרות של Basic information ושל Machine configuration.
- בתיבת הדו-שיח Environment customization, מרחיבים את הקטע Advanced container options ובוחרים באפשרות משתני סביבה.
- לוחצים על addהוספת משתנה.
- מזינים את הערכים
CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDOו-true.
התאמה אישית בלי להרחיב את התמונה
כדי שיהיה נוח, כל קובצי האימג' הבסיסיים של Cloud Workstations בודקים אם יש קובץ להפעלה ב-/home/user/.workstation/customize_environment, ואם הוא קיים, מריצים אותו ברקע בתור user. כך אפשר להפעיל כל סקריפט או קובץ בינארי בזמן ההפעלה. בניגוד ל-.profile או ל-.bashrc, הסקריפט פועל רק פעם אחת כשעמדת העבודה מתחילה, ולא פעם אחת לכל התחברות למעטפת.
הסקריפט של customize_environment פועל בתור user, לכן חשוב לעדכן את ההרשאות לפי הצורך כשכותבים את הסקריפט. לדוגמה, אם רוצים להתקין את Emacs בכל פעם שתחנת העבודה מופעלת, התוכן של customize_environment יכול להיות דומה לזה:
#!/bin/bash
sudo apt-get update
sudo apt-get install -y emacs
יומני הביצוע של customize_environment נמצאים בקונטיינר ב-/var/log/customize_environment, והם נכתבים גם ביומני הפלט של הקונטיינר.
אחרי שמריצים את customize_environment, נוצר קובץ ב-/var/run/customize_environment_done. מכיוון ש-customize_environment פועל במקביל להפעלת תחנת העבודה, החבילות שמותקנות על ידי הסקריפט יכולות להיות זמינות כבר כמה רגעים אחרי שתחנת העבודה הופעלה.
מניעת זמן קצוב לתפוגה במצב חוסר פעילות
כדי שיהיה לכם נוח, כל קובצי האימג' הבסיסיים של Cloud Workstations כוללים סקריפט שמותקן מראש ב-/google/scripts/keep_alive.sh. הסקריפט הזה שולח הודעות keep-alive באופן קבוע, שיכולות למנוע את השבתת סביבת העבודה בגלל זמן קצוב לתפוגה של חוסר פעילות כשאתם מריצים תהליכים ברקע בלי אינטראקציה ישירה.
איך למנוע מצב של זמן קצוב לתפוגה של חוסר פעילות עם סוכני AI
בנוסף, קובצי האימג' הבסיסיים של Cloud Workstations כוללים סקריפטים לדוגמה להגדרת הסוכן בנתיב /google/samples/agents/keepalive/. ההגדרות לדוגמה האלה מאפשרות להגדיר סוכני תכנות מבוססי-AI (כמו Claude Code ו-Antigravity CLI) בתוך תחנת העבודה, כדי להשאיר אותה פעילה באופן אוטומטי בזמן שהם עובדים על משימות. כשהסוכן מסיים את המשימות שלו או משהה אותן כדי להמתין לקלט מהמשתמש, הסקריפט מפסיק לשלוח הודעות keep-alive, וכך מאפשר לתחנת העבודה להגיע לזמן קצוב לתפוגה בגלל חוסר פעילות.
ההגדרות האלה פועלות בצורה הטובה ביותר כשהגדרת סביבת העבודה מוגדרת להשתמש בהשהיה של סביבת העבודה (idleAction מוגדר ל-SUSPEND), מה שמאפשר לסביבת העבודה לשמור את מצב הזיכרון ולהמשיך בצורה חלקה כשתחזרו.
מידע נוסף על הגדרת תהליכי עבודה עם נציג תמיכה ו-keep-alive hooks זמין במאמר פיתוח מותאם לנציג תמיכה.
שימוש בקובץ אימג' של קונטיינר משלכם
אתם יכולים גם להשתמש בקובץ אימג' של קונטיינר משלכם או בקובצי אימג' של קונטיינרים חיצוניים, כל עוד הם מבוססים על Linux ומריצים תהליך חסימה כשהקונטיינר מופעל.
כשמגדירים את קובץ ה-Docker, ההוראה ENTRYPOINT צריכה להריץ תהליך חסימה כמו sleep infinity כדי שהמאגר ימשיך לפעול ולא ייסגר מיד. לחלופין, אפשר להגדיר את השדה config.container.args בהגדרות של סביבת העבודה כדי לציין תהליך חסימה.
כשמשתמשים בקובץ אימג' של קונטיינר משלכם, חשוב לשים לב לדברים הבאים:
ב-Cloud Workstations לא נדרשים סקריפטים נוספים מתמונת הבסיס של Cloud Workstations.
עם זאת, אתם יכולים לעיין בסקריפטים בספרייה
/etc/workstation-startup.d/בתוך קונטיינר שמריץ את קובץ האימג' הבסיסי של Cloud Workstations. שמות הקבצים מציינים מה כל סקריפט עושה.מומלץ להריץ שרת SSH בקונטיינר. כדי לראות איך Cloud Workstations מגדיר את זה כברירת מחדל, עיינו ב-
/etc/workstation-startup.d/020_start-sshd.shבתמונת הבסיס שמוגדרת כברירת מחדל.מומלץ להריץ את סביבת הפיתוח המשולבת (IDE) או את שרת האינטרנט שמוגדרים כברירת מחדל ביציאה
80.
Google Cloud מספק קובצי אימג' בסיסיים סטנדרטיים שבהם אתם יכולים להשתמש כדי ליצור קובץ אימג' של קונטיינר בהתאמה אישית מלאה.
הרחבת קובצי אימג' בסיסיים של Cloud Workstations
כשמרחיבים קובץ אימג' בסיסי של Cloud Workstations כדי ליצור קובץ אימג' בהתאמה אישית לסביבת תחנת העבודה, אפשר להשתמש בשלוש גישות:
- מעדכנים את
Dockerfileכך שיכלול את כל הנכסים הסטטיים הנוספים שרוצים להוסיף. - כדי להתאים אישית את הקונטיינר שפועל, אפשר להוסיף עוד קבצים להפעלה ב-
/etc/workstation-startup.d/. הקבצים בספרייה הזו פועלים באופן אוטומטי בסדר לקסיקוגרפי בזמן הפעלת הקונטיינר, כך שאתם יכולים להוסיף קידומת לשם הקובץ כדי להפעיל אותו בזמן המתאים במהלך הפעלת תחנת העבודה. - כדי להתאים אישית את הפעלת הקונטיינר, אפשר לשנות את
ENTRYPOINTבקובץ Docker.
דוגמאות לקובצי Docker בהתאמה אישית
בקטע הזה מפורטים תרחישים לדוגמה והוראות ליצירת קובצי Docker משלכם.
קובץ אימג' של קונטיינר עם emacs מותקן מראש
כדי ליצור קובץ אימג' של קונטיינר עם emacs מותקן מראש, מריצים את הפקודות הבאות:
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
RUN sudo apt update
RUN sudo apt install -y emacs
קובץ אימג' של קונטיינר עם התאמה אישית של המשתמש
כדי להתאים אישית קובץ אימג' של קונטיינר:
יוצרים סקריפט ב-
/etc/workstation-startup.d/*שפועל אחרי010_add-user.sh, לדוגמה011_customize-user.sh:#!/bin/bash # Create new group groupadd $GROUP # Add the user to a new group usermod -a -G $GROUP $USERNAMEמחליפים את
$GROUPבשם הקבוצה החדש ואת$USERNAMEבשם המשתמש.נניח שקראתם לסקריפט
011_customize-user.sh, הוסיפו את הקוד הבא לתמונה בקובץ Docker והפכו אותו לקובץ הפעלה:FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest COPY 011_customize-user.sh /etc/workstation-startup.d/ RUN chmod +x /etc/workstation-startup.d/011_customize-user.sh
קובץ אימג' של קונטיינר שמגדיר משתני סביבה של קונטיינר בסשנים של SSH
משתני סביבה שמוגדרים ברמת ההגדרות האישיות של תחנת העבודה או ברמת תחנת העבודה מועברים לתהליכי משנה ישירים באמצעות הפקודה של נקודת הכניסה. הסביבה כוללת את ה-IDE בתמונות הבסיס שהוגדרו מראש. עם זאת, סשנים של SSH הם לא תהליכי צאצא של נקודת הכניסה, ומשתני הסביבה המותאמים אישית האלה לא מוגדרים בהם.
כדי להגדיר את משתני הסביבה האלה בסשנים של SSH, צריך להגדיר קובץ אימג' של קונטיינר בהתאמה אישית שמעביר את משתני הסביבה האלה מפקודת נקודת הכניסה של הקונטיינר לקובץ /etc/environment.
כדי לעשות את זה:
יוצרים סקריפט ב-
/etc/workstation-startup.d/*שפועל אחרי010_add-user.sh, לדוגמה011_add-ssh-env-variables.sh:#!/bin/bash # echo "CUSTOM_ENV_VAR=$CUSTOM_ENV_VAR" >> /etc/environmentמחליפים את
CUSTOM_ENV_VARבשם של משתנה הסביבה הרצוי.נניח שקראתם לסקריפט
011_add-ssh-env-variables.sh, הוסיפו את הקוד הבא לתמונה בקובץ Docker והפכו אותו לקובץ הפעלה:FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest COPY 011_add-ssh-env-variables.sh /etc/workstation-startup.d/ RUN chmod +x /etc/workstation-startup.d/011_add-ssh-env-variables.sh
קובץ אימג' של קונטיינר שמאפשר העברת X11 לסשנים של SSH
העברת X11 מאפשרת להפעיל אפליקציות מרוחקות ולהעביר את תצוגת האפליקציה למכונה מקומית.
כדי ליצור קובץ אימג' של קונטיינר שמאפשר העברת X11, צריך לשנות את קובץ התצורה של הדימון (daemon) של OpenSSH (/etc/ssh/sshd_config) שסופק על ידי קובצי האימג' הבסיסיים של Cloud Workstations, על ידי הוספת X11Forwarding yes (כדי לאפשר העברת X11) ו-AddressFamily inet (כדי להבטיח שייעשה שימוש רק ב-IPv4). מידע נוסף על מילות המפתח האלה זמין בדפי האינטרנט של OpenBSD בנושא AddressFamily ו-X11Forwarding.
הנה קובץ Docker לדוגמה, שמבצע את השינויים הנדרשים:
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
# Permit X11 forwarding using only IPv4
RUN cat >> /etc/ssh/sshd_config <<-EOF
AddressFamily inet
X11Forwarding yes
EOF
העתקת Code OSS for Cloud Workstations לקובץ אימג' אחר של קונטיינר
ב-build עם כמה שלבים אפשר להשתמש בכמה הצהרות FROM בקובץ ה-Dockerfile. כל הוראת FROM יכולה להשתמש בבסיס שונה, ומאפשרת להעתיק פריטי מידע שנוצרו בתהליך הפיתוח בין שלבי ה-build. כדי להוסיף את Code OSS for Cloud Workstations לקובץ אימג' אחר של קונטיינר, צריך להשתמש ב-build בכמה שלבים כדי להעתיק את תיקיית האפליקציה /opt/code-oss לקובץ האימג'. אם רוצים להפעיל את Code OSS for Cloud Workstations בזמן ההפעלה של הקונטיינר, צריך להעתיק גם את הסקריפט /etc/workstation-startup.d/110_start-code-oss.sh לקונטיינר.
הנה קובץ Docker לדוגמה שמעתיק את Code OSS ל-JetBrains IntelliJ Ultimate image. לאחר מכן תוכלו להשתמש בכל אחת מסביבות הפיתוח המשולבות:
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest as code-oss-image
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/jetbrains-intellij:latest
# Copy Code OSS for Cloud Workstations and startup scripts into our custom image
COPY --from=code-oss-image /opt/code-oss /opt/code-oss
COPY --from=code-oss-image /etc/workstation-startup.d/110_start-code-oss.sh /etc/workstation-startup.d/110_start-code-oss.sh
# Use the existing entrypoint script which will execute all scripts in /etc/workstation-startup.d/
ENTRYPOINT ["/google/scripts/entrypoint.sh"]
קובץ אימג' של קונטיינר שמתקין מראש תוספי IDE ב-Code OSS ל-Cloud Workstations לפיתוח ב-Java
כדי ליצור קובץ אימג' של קונטיינר שמתקין מראש תוספי IDE ב-Code OSS for Cloud Workstations לפיתוח ב-Java בזמן ה-build, מריצים את הפקודות הבאות:
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
RUN wget https://open-vsx.org/api/vscjava/vscode-java-debug/0.40.1/file/vscjava.vscode-java-debug-0.40.1.vsix && \
unzip vscjava.vscode-java-debug-0.40.1.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/java-debug
RUN wget https://open-vsx.org/api/vscjava/vscode-java-dependency/0.19.1/file/vscjava.vscode-java-dependency-0.19.1.vsix && \
unzip vscjava.vscode-java-dependency-0.19.1.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/java-dependency
RUN wget https://open-vsx.org/api/redhat/java/1.6.0/file/redhat.java-1.6.0.vsix && \
unzip redhat.java-1.6.0.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/redhat-java
RUN wget https://open-vsx.org/api/vscjava/vscode-maven/0.35.2/file/vscjava.vscode-maven-0.35.2.vsix && \
unzip vscjava.vscode-maven-0.35.2.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/java-maven
RUN wget https://open-vsx.org/api/vscjava/vscode-java-test/0.35.0/file/vscjava.vscode-java-test-0.35.0.vsix && \
unzip vscjava.vscode-java-test-0.35.0.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/java-test
RUN chmod a+rwx -R /opt/code-oss/extensions/
אם מתקינים מראש תוספים, הם נחשבים לתוספים מובנים.
לא תוכלו לעדכן את התוספים האלה, ויכול להיות שהם לא יופיעו בקטע של התוספים המותקנים ב-
Extensions Marketplace.
עם זאת, אתם יכולים למצוא את התוספים המובנים על ידי חיפוש של
@builtin.
דרך נוספת להתקין תוספים בזמן ההפעלה היא להריץ סקריפט לטעינה בזמן ההפעלה.
לדוגמה, מוסיפים את הסקריפט הבא לטעינה בזמן ההפעלה בקטע /etc/workstation-startup.d/120_install_extensions.sh:
sudo -u user /opt/code-oss/bin/codeoss-cloudworkstations --install-extension vscjava.vscode-java-debug@0.40.1 \
--install-extension vscjava.vscode-java-dependency@0.19.1 \
--install-extension redhat.java@1.6.0 \
--install-extension vscjava.vscode-maven@0.35.2 \
--install-extension vscjava.vscode-java-test@0.35.0
בשיטה הזו, התוסף מופיע ב-Extensions Marketplace של ואפשר לעדכן אותו משם.
התקנת סביבות פיתוח משולבות (IDE) ופלאגינים של JetBrains בקובצי אימג' בסיסיים
כשמתאימים אישית קובצי אימג' של Docker להגדרות של תחנות עבודה, אפשר להתקין סביבות פיתוח משולבות ופלאגינים של JetBrains, כמו Cloud Code for IntelliJ, בקובץ האימג' הבסיסי. תמונות בסיס של Cloud Workstations למוצרי JetBrains כוללות את הסקריפטים הבאים שיעזרו לכם:
-
jetbrains-installer.sh: התקנת סביבות פיתוח משולבות (IDE) של JetBrains -
plugin-installer.sh: התקנת פלאגינים, כמו Cloud Code ל-IntelliJ
אפשר להשתמש בסקריפטים האלה לפי הצורך כדי להתאים אישית את קובץ האימג' הבסיסי, להפעיל אותם באמצעות סקריפט לטעינה בזמן ההפעלה או להריץ אותם אחרי הפעלת תחנת העבודה.
סקריפטים של מנהל ההתקנה
כדי לראות את קובצי המקור של הסקריפטים jetbrains-installer.sh ו-plugin-installer.sh, מפעילים תחנת עבודה באמצעות הגדרה שמשתמשת באחד מהאימג'ים שהוגדרו מראש ב-JetBrains, מתחברים לתחנת העבודה באמצעות JetBrains Gateway או SSH, ואז מעיינים בקובצי הסקריפטים בספרייה installer-scripts שנמצאת בתיקיית שורש.
מומלץ להריץ את הסקריפטים האלה בזמן בניית הקונטיינר. אל תפעילו אותם בתחנת עבודה שכבר התחילה.
שימוש בסקריפט של תוכנת ההתקנה של הפלאגין
הסקריפט plugin-installer.sh משתמש בתחביר הבא:
plugin-installer.sh [-v VERSION] [-d DESTINATION-DIRECTORY] [-c CHECKSUM] [-f] PLUGIN_ID
מחליפים את מה שכתוב בשדות הבאים:
-
VERSION: מספר הגרסה של הפלאגין שרוצים להתקין (אופציונלי). -
DESTINATION-DIRECTORY: הספרייה האופציונלית שבה צריך להתקין את הפלאגין. אם לא צוין, המערכת משתמשת בספריית העבודה. -
CHECKSUM: סיכום ביקורת (checksum) אופציונלי מסוג SHA-256 של הפלאגין המבוקש. -
-f: אם מציינים את הפרמטר הזה, כל פלאגין קיים יוחלף. -
PLUGIN_ID: המזהה המספרי הנדרש של הפלאגין מ-JetBrains Marketplace. לדוגמה, כדי להוסיף את Dart, משתמשים ב-6351בתור PLUGIN_ID. כדי להוסיף את Cloud Code ל-IntelliJ, משתמשים ב-8079בתור PLUGIN_ID.
לדוגמה, כדי להתקין את הגרסה העדכנית של הפלאגין Dart ב-IntelliJ, מריצים את הפקודה הבאה:
/installer-scripts/plugin-installer.sh -d /opt/ideaIU/plugins/ 6351
שימוש בסקריפט של מנהל ההתקנה של JetBrains
מומלץ להשתמש בסקריפט של JetBrains להתקנה כשמרחיבים קובץ אימג' בסיסי שהוגדר מראש לסביבות פיתוח משולבות של JetBrains.
הסקריפט jetbrains-installer.sh משתמש בתחביר הבא:
jetbrains-installer.sh IDE [ pinned|latest ]
מחליפים את מה שכתוב בשדות הבאים:
IDE: סביבת הפיתוח המשולבת של JetBrains שרוצים להתקין. צריך להשתמש באחד מהקיצורים הבאים של סביבת הפיתוח המשולבת:סביבת פיתוח משולבת (IDE) המוצר הותקן clCLion clionCLion goGoLand golandGoLand iiuIntellij Ultimate intellijIntellij Ultimate pcpPyCharm Professional pycharmPyCharm Professional psPHPStorm phpstormPHPStorm rdרוכב/ת riderרוכב/ת rmRubyMine rubymineRubyMine wsWebStorm webstormWebStorm
pinned|latest: אופציונלי – משתמשים בגרסה המוצמדת או בגרסה העדכנית של ה-IDE. ברירת המחדל היאlatest.
לדוגמה, כדי להתקין את הגרסה העדכנית של Clion, מריצים את הפקודה הבאה:
/installer-scripts/jetbrains-installer.sh clion
התאמה אישית של קובצי התצורה של JetBrains IDE
אם ספריית בית קבועה צוינה בהגדרות של תחנות העבודה, קובצי התצורה $IDE.vmoptions ו-$IDE.properties נשמרים באופן אוטומטי בתמונות הבסיס של Cloud Workstations עם סביבות הפיתוח המשולבות של JetBrains. כדי לשנות את מיקום ברירת המחדל של הקבצים האלה, צריך לציין את משתנה הסביבה CLOUD_WORKSTATIONS_JETBRAINS_PERISTED_CONFIG_DIR.
למידע נוסף, עיינו ב-/etc/workstation-startup.d/120_persist-jetbrains-configs.sh בכל תמונת בסיס של JetBrains כדי ללמוד איך Cloud Workstations מגדיר את זה כברירת מחדל.
הרחבת קובץ אימג' בסיסי של Docker באמצעות Cloud Code ל-IntelliJ
קטע הקוד הבא של קובץ Docker מרחיב קובץ אימג' בסיסי של Docker עם Cloud Code ל-IntelliJ, על ידי הכללת 8079 כמזהה הפלאגין הנדרש.
בדוגמה הזו מצוינים גם מספר הגרסה version 22.9.3-222, ספריית היעד /opt/ideaIU/plugins/ וסיכום הביקורת 89628279ed9042c526a81facc09bf53f8fb8b83b4595b0d329d94c1611e0c379:
...
# Install IDE and Plugins
RUN bash /installer-scripts/jetbrains-installer.sh intellij pinned && \
# Install Cloud Code - https://plugins.jetbrains.com/plugin/8079-cloud-code
bash /installer-scripts/plugin-installer.sh \
-v 22.9.3-222 \
-d /opt/ideaIU/plugins/ \
-c 89628279ed9042c526a81facc09bf53f8fb8b83b4595b0d329d94c1611e0c379 \
8079
# Register IDE with JetBrains Gateway
RUN echo 'runuser user -c "/opt/ideaIU/bin/remote-dev-server.sh registerBackendLocationForGateway"' > /etc/workstation-startup.d/110_register-intellij-with-gateway.sh \
echo 'echo "IntelliJ-Ultimate ready for incoming gateway connection"' >> /etc/workstation-startup.d/110_register-intellij-with-gateway.sh
...
התקנת תוספי IDE נוספים ב-Code OSS ל-Cloud Workstations
תוספי IDE נוספים זמינים ב-Open VSX Registry.
אפשר גם למצוא את כתובת ה-URL של קובץ ה-.vsix על ידי העתקת כתובת ה-URL מהקישור הורדה של כל תוסף.
אם פותחים את
Extensions Marketplace מתחנת עבודה, מופיע הכפתור Install במקום Download.
הגדרות ברירת המחדל של Code OSS ב-Cloud Workstations
למידע מפורט על אחסון ההגדרות ב-Code OSS for Cloud Workstations, קראו את המאמר התאמה אישית של ההגדרות.
אם מציינים ספריית בית קבועה בהגדרות של סביבות העבודה, אפשר להגדיר את הגדרות ברירת המחדל של Code OSS לסביבות עבודה ב-Cloud על ידי הוספת סקריפט לטעינה בזמן ההפעלה שכותב את ההגדרות ב-$HOME/.codeoss-cloudworkstations/data/Machine/settings.json.
לדוגמה, אם רוצים להגדיר את ערכת הצבעים כהה כברירת מחדל, מרחיבים את קובץ האימג' של העורך הבסיסי כך שיכלול את הסקריפט הבא ב-/etc/workstation-startup.d/150_default-ide-color-theme.sh
cat <<< $(jq '. += {"workbench.colorTheme": "Default Dark Modern"}' settings.json) > settings.json
יצירת קובץ אימג' בהתאמה אישית של קונטיינר
למידע מפורט על פקודות Docker, קראו את חומרי העזר של Docker. מזינים את הפקודה הבאה כדי ליצור את הקונטיינר:
docker build CUSTOM_IMAGE_FOLDER -t TARGET_IMAGE
שימו לב שהחלפת הטקסט שלפני סמל העריכה מעדכנת את הדוגמאות האחרות בדף הזה.
מחליפים את מה שכתוב בשדות הבאים:
-
CUSTOM_IMAGE_FOLDER: הנתיב לתיקייה שיצרתם כדי לאחסן את קובץ האימג' בהתאמה אישית.
TARGET_IMAGE: הנתיב לתמונה ב-Artifact Registry.לדוגמה,
TARGET_IMAGEיכול להצביע על נתיב של קובץ אימג' יעד שדומה לנתיב הבא:*.pkg.dev/cloud-workstations-external/customimage:latestמחליפים את * לפי הצורך בשם האזור ובמזהים נוספים.
אפשר גם לעדכן את משתנה הסביבה CLOUD_WORKSTATIONS_CUSTOM_IMAGE כך שיצביע על המאגר.
למידע נוסף על אחסון קובצי אימג' של Docker ב-Artifact Registry, עיינו בקטעים הבאים:
- איך יוצרים מאגר Docker באמצעות Artifact Registry
- מוסכמות למתן שמות למאגרים ולקובצי אימג'.
אירוח של קובץ אימג' של קונטיינר בהתאמה אישית
כדי לארח קובצי אימג' של קונטיינרים בהתאמה אישית, אנחנו ממליצים על Artifact Registry ותומכים בו. אם אתם משתמשים ב-GitHub או במאגר ציבורי או פרטי אחר, יכול להיות ש-Cloud Workstations לא יפעל כמו שצריך. למידע נוסף, קראו את ההערה החשובה בקטע שימוש בקובץ אימג' של קונטיינר בהתאמה אישית.
בדיקת קובץ האימג' של הקונטיינר בהתאמה אישית
אחרי שה-container נוצר, אפשר לבדוק אותו באמצעות הפקודה הבאה:
docker run --privileged -p LOCAL_PORT:CONTAINER_PORT TARGET_IMAGE
מחליפים את מה שכתוב בשדות הבאים:
-
LOCAL_PORT: מספר היציאה המקומית -
CONTAINER_PORT: מספר היציאה של הקונטיינר
לדוגמה, החלפת LOCAL_PORT:CONTAINER_PORT ב-8080:80 מקצה את היציאה 8080 לשימוש מקומי ואת היציאה 80 לשימוש בקונטיינר.
אם אתם מרחיבים את קובץ האימג' של העורך הבסיסי של Cloud Workstations, מריצים את הפקודה docker ואז בודקים את קובץ האימג' של תחנת העבודה על ידי התחברות לתחנת העבודה דרך הדפדפן המקומי או על ידי הרצת ssh כדי להתחבר לקונטיינר:
- אם אתם מתחברים דרך הדפדפן, ודאו שאתם מעבירים את
-p 8080:80לפקודהdocker runואז פותחים אתlocalhost:8080. - אם אתם מעדיפים להתחבר באמצעות SSH, ודאו שאתם מעבירים את
-p 2222:22לפקודהdocker runואז מריצים אתssh user@localhost -p 2222.
שימוש בקובץ אימג' של קונטיינר בהתאמה אישית
כדי להשתמש בקובץ האימג' של הקונטיינר בהתאמה אישית אחרי שיצרתם ובדקתם אותו באופן מקומי, צריך להעביר את הקונטיינר ל-Artifact Registry באמצעות הפקודה הבאה:
docker push TARGET_IMAGE
עכשיו אתם יכולים ליצור הגדרת תחנת עבודה באמצעות קובץ האימג' של הקונטיינר שיצרתם ודחפתם.
למידע נוסף, קראו את המאמר יצירת מאגר Docker באמצעות Artifact Registry.
לנפות באגים
כדי למצוא בעיות בהרצה של קובץ האימג' של הקונטיינר ולפתור אותן, צריך לבדוק את יומני הפלט של הקונטיינר מתחנות העבודה שפועלות.
מומלץ: אבטחת צינור עיבוד הנתונים של התמונות
אתם אחראים לתחזק ולעדכן את החבילות בהתאמה אישית ואת יחסי התלות שנוספו לתמונות בהתאמה אישית.
אם אתם יוצרים תמונות בהתאמה אישית, מומלץ:
- מריצים כלי לסריקת קונטיינרים כמו Artifact Analysis כדי לבדוק את כל יחסי התלות הנוספים שהוספתם.
- תזמון גרסאות build כדי ליצור מחדש קובצי אימג' מדי שבוע, או יצירה אוטומטית מחדש של קובצי אימג' של קונטיינרים.
המאמרים הבאים
- יצירה אוטומטית מחדש של קובצי אימג' של קונטיינרים כדי לסנכרן עדכונים של קובצי אימג' בסיסיים באמצעות Cloud Build ו-Cloud Scheduler.
- להגדיר שיטות מומלצות לאבטחה.
- מידע נוסף על Artifact Analysis