תמונות הבסיס שהוגדרו מראש שסופקו על ידי Cloud Workstations מכילות רק סביבה מינימלית עם IDE, מסוף Linux בסיסי וכלי שפה ושרת sshd. כדי לזרז את הגדרת הסביבה של תרחישי שימוש ספציפיים בפיתוח, אתם יכולים ליצור אימג'ים מותאמים אישית של קונטיינרים שמרחיבים את האימג'ים הבסיסיים האלה כדי להתקין מראש כלים ותלותיות ולהריץ סקריפטים של אוטומציה.
אם משתמשים בתמונות קונטיינר בהתאמה אישית, מומלץ להגדיר צינור להרכבה מחדש של התמונות האלה באופן אוטומטי כשתמונת הבסיס של Cloud Workstations מתעדכנת. בנוסף, מומלץ להריץ כלי לסריקת קונטיינרים כמו Artifact Analysis כדי לבדוק תלות נוספת שהוספתם. באחריותכם לתחזק ולעדכן חבילות והסתמכויות בהתאמה אישית שנוספו לתמונות בהתאמה אישית.
לפני שמתחילים
אתם צריכים מכונה עם כלים ליצירת קובצי אימג' של קונטיינרים, כמו 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וקובץ Dockerfile בתוך התיקייה הזו, שמרחיב את תמונת הבסיס שנבחרה, כמו בדוגמאות הבאות.
מבנה קובץ הבסיס של Cloud Workstations
תמונות הבסיס של Cloud Workstations חולקות את המבנה המוגדר הבא:
- קובץ נקודת הכניסה של תמונת הבסיס מוגדר כ-
/google/scripts/entrypoint.sh. בזמן ההפעלה, קובצי האימג' הבסיסיים מריצים קבצים מתחת ל-
/etc/workstation-startup.d/*בסדר מילוני כדי לאתחל את סביבת תחנת העבודה.אלה הקבצים וההתנהגות שלהם:
-
000_configure-docker.sh: הגדרה והרצה של Docker בתוך תחנת העבודה.
010_add-user.sh: יוצר את משתמש ברירת המחדל ב-Cloud Workstations.מכיוון שהדיסק הקשיח מצורף באופן דינמי לקונטיינר, צריך להוסיף את המשתמשים בהפעלת תחנת העבודה, ולא בקובץ Dockerfile.
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/:
כברירת מחדל, סקריפטים בספרייה הזו מופעלים כ-root. כדי להריץ את הסקריפטים כמשתמש אחר, משתמשים בפקודה
runuser.הסקריפטים מופעלים לפי הסדר המילוני שלהם, ולכן מומלץ להוסיף לסקריפטים קידומת של מספר בן שלוש ספרות שגדול מ-200.
לחלופין, אם לא רוצים להאריך את תוקף התמונה של תחנת עבודה, אפשר ליצור סקריפט customize_environment בספריית הבית.
שינויים בספריית הבית
אם בהגדרת תחנת העבודה מצוין ספריית בית מתמשכת (שזו התנהגות ברירת המחדל), דיסק מתמשך שמגבה את ספריית הבית מצורף באופן דינמי למאגר בזמן הריצה. התהליך הזה מחליף את השינויים שבוצעו בספרייה /home בזמן יצירת קובץ האימג' בקונטיינר.
כדי לשמור את העדכונים, צריך לשנות את ספריית /home בזמן הריצה של הקונטיינר על ידי הוספת סקריפט לספרייה /etc/workstation-startup.d, או על ידי הוספת הגדרה לכל משתמש בספרייה /etc/profile.d.
כדי לזרז את התהליך, כדאי להריץ את סקריפט ההגדרה כתהליך ברקע (מוסיפים אמפרסנד, &, בסוף הפקודה) כדי למנוע חסימה של הפעלת הקונטיינר.
דוגמאות להגדרות של זמן בנייה שצריך להעביר לזמן ריצה של קונטיינר:
- הגדרה של
gitלכל משתמש - מאגרי
gitששוכפלו בספריית הבית - הגדרת משתמש ישירה, כמו הצבת קבצים בספרייה
$HOME/.config - יצירת משתמש
יצירה ושינוי של משתמשים
מכיוון שהדיסק הקשיח מצורף באופן דינמי לקונטיינר בזמן הריצה, צריך להוסיף את המשתמשים בהפעלה של תחנת העבודה, ולא בקובץ Dockerfile. כדי לשנות או ליצור משתמשים נוספים, מומלץ לעדכן את /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, שמקבל את הגרסאות העדכניות של מפתחות ציבוריים שהותקנו מראש ומייבא אותם מחדש.
רשימת גרסאות IDE מותקנות
חלק מקובצי הבסיס של Cloud Workstations מגיעים עם סביבת פיתוח משולבת (IDE) שמותקנת מראש. לנוחיותכם, מצורף סקריפט /google/scripts/preinstalled-ide-versions.sh
שמפרט את השם ופרטי הגרסה של סביבות הפיתוח המשולבות שמותקנות בתמונה.
השבתה של sudo הרשאות root
למשתמש שמוגדר כברירת מחדל בתחנת העבודה יש הרשאות גישה לרמת הבסיס (root) בקונטיינרים האלה.sudo כדי להשבית את גישת הבסיס לקונטיינר Docker, מגדירים את משתנה הסביבה CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO לערך true כשיוצרים את הגדרת תחנת העבודה.
כדי להגדיר את משתנה הסביבה הזה דרך מסוף Google Cloud כשיוצרים את הגדרת תחנת העבודה, פועלים לפי השלבים הבאים:
- כשיוצרים את ההגדרה של תחנת העבודה, משלימים את ההגדרה של 'מידע בסיסי' ושל 'הגדרת המכונה'.
- בתיבת הדו-שיח Environment customization, מרחיבים את הקטע Advanced container options ובוחרים באפשרות Environment variables.
- לוחצים על הוספההוספת משתנה.
- מזינים את הערך
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 באופן קבוע, כדי למנוע את כיבוי תחנת העבודה בגלל פסק זמן של חוסר פעילות כשמריצים תהליכים ברקע בלי אינטראקציה ישירה.
שימוש בקובץ אימג' משלכם בקונטיינר
אתם יכולים גם להשתמש בקובץ אימג' משלכם בקונטיינר או בקובצי אימג' חיצוניים בקונטיינר, בתנאי שהם מבוססים על Linux ומריצים תהליך חסימה כשהקונטיינר מופעל.
כשמגדירים את Dockerfile, ההוראה ENTRYPOINT חייבת להפעיל תהליך חסימה כמו sleep infinity כדי שהקונטיינר ימשיך לפעול ולא ייצא באופן מיידי. אפשרות נוספת היא להגדיר את השדה config.container.args בהגדרות של תחנת העבודה כדי לציין תהליך חסימה.
כשמשתמשים בתמונת קונטיינר משלכם, חשוב לשים לב לדברים הבאים:
לא נדרשים סקריפטים נוספים מתמונת הבסיס של Cloud Workstations.
עם זאת, אפשר לעיין בסקריפטים בספרייה
/etc/workstation-startup.d/בתוך קונטיינר שמריץ את תמונת הבסיס של Cloud Workstations. שמות הקבצים מציינים מה כל סקריפט עושה.מומלץ להריץ שרת SSH במאגר. במאמר בנושא
/etc/workstation-startup.d/020_start-sshd.shבתמונת הבסיס שמוגדרת כברירת מחדל, מוסבר איך Cloud Workstations מגדיר את זה כברירת מחדל.מומלץ להריץ את סביבת הפיתוח המשולבת (IDE) או את שרת האינטרנט שמוגדרים כברירת מחדל ביציאה
80.
הרחבת תמונות הבסיס של Cloud Workstations
כשמרחיבים תמונת בסיס של Cloud Workstations כדי ליצור תמונה בהתאמה אישית לסביבת תחנת העבודה, אפשר להשתמש בשלוש גישות:
- מעדכנים את
Dockerfileכדי לכלול נכסים סטטיים נוספים שרוצים להוסיף. - מוסיפים קבצים להפעלה נוספים בקטע
/etc/workstation-startup.d/כדי להתאים אישית את קובץ ה-container הפועל. קבצים בספרייה הזו מופעלים באופן אוטומטי בסדר לקסיקוגרפי כשמפעילים את הקונטיינר, כך שאפשר להוסיף קידומת לשם הקובץ כדי להפעיל אותו בזמן המתאים במהלך הפעלת תחנת העבודה. - אפשר לשנות את
ENTRYPOINTב-Dockerfile כדי להתאים אישית את הפעלת הקונטיינר.
דוגמאות לקובצי Dockerfile מותאמים אישית
בקטע הזה מפורטים תרחישים לדוגמה והוראות ליצירת קובצי Dockerfile משלכם.
קובץ אימג' של קונטיינר עם 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
קובץ אימג' של קונטיינר עם התאמה אישית של משתמש
כדי להתאים אישית קובץ container image:
יוצרים סקריפט ב-
/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
משתני סביבה שמוגדרים בהגדרות תחנת העבודה או ברמת תחנת העבודה מועברים לתהליכי משנה ישירים באמצעות פקודת נקודת הכניסה. זה כולל את סביבת הפיתוח המשולבת בתמונות הבסיס שהוגדרו מראש. עם זאת, סשנים של 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, צריך לשנות את קובץ התצורה של OpenSSH daemon (/etc/ssh/sshd_config) שסופק על ידי תמונות הבסיס של Cloud Workstations. מוסיפים את X11Forwarding yes (כדי לאפשר העברת X11) ואת AddressFamily inet (כדי לוודא שנעשה שימוש רק ב-IPv4). מידע נוסף על מילות המפתח האלה זמין בדפי האינטרנט של OpenBSD בנושא AddressFamily ו-X11Forwarding.
דוגמה לקובץ Dockerfile שבו בוצעו השינויים הנדרשים:
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 ל-Cloud Workstations לקובץ אימג' אחר של קונטיינר
ב-multi-stage build אפשר להשתמש בכמה הצהרות FROM בקובץ Dockerfile. כל הוראה של FROM יכולה להשתמש בבסיס שונה, ומאפשרת להעתיק ארטיפקטים בין שלבי בנייה. כדי להוסיף Code OSS ל-Cloud Workstations לקובץ אימג' אחר של קונטיינר, משתמשים ב-multi-stage build כדי להעתיק את תיקיית האפליקציה /opt/code-oss לקובץ האימג'. אם רוצים להפעיל את Code OSS ל-Cloud Workstations בזמן הפעלת הקונטיינר, צריך גם להעתיק את הסקריפט /etc/workstation-startup.d/110_start-code-oss.sh לקונטיינר.
הנה קובץ Dockerfile לדוגמה שמעתיק את Code OSS לתמונה של JetBrains IntelliJ Ultimate. אחרי כן תוכלו לבצע פעולות באחד מה-IDE:
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 ל-Cloud Workstations לפיתוח Java בזמן הבנייה, מריצים את הפקודות הבאות:
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 להגדרות של תחנות עבודה, אפשר להתקין בסביבות פיתוח משולבות (IDE) של JetBrains ובפלאגינים, כמו Cloud Code ל-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 כשמרחיבים תמונת בסיס שהוגדרה מראש עבור סביבות פיתוח משולבות (IDE) של JetBrains.
הסקריפט jetbrains-installer.sh משתמש בתחביר הבא:
jetbrains-installer.sh IDE [ pinned|latest ]
מחליפים את מה שכתוב בשדות הבאים:
IDE: סביבת הפיתוח המשולבת (IDE) של JetBrains להתקנה. צריך להשתמש באחד מהקיצורים הבאים של סביבות פיתוח משולבות (IDE):סביבת פיתוח משולבת (IDE) המוצר הותקן clCLion clionCLion goGoLand golandGoLand iiuIntellij Ultimate intellijIntellij Ultimate pcpPyCharm Professional pycharmPyCharm Professional psPHPStorm phpstormPHPStorm rdנוסע riderנוסע rmRubyMine rubymineRubyMine wsWebStorm webstormWebStorm
pinned|latest: אופציונלי – אפשר להשתמש בגרסה המוצמדת או בגרסה העדכנית של סביבת הפיתוח המשולבת. ברירת המחדל היאlatest.
לדוגמה, כדי להתקין את הגרסה העדכנית של Clion, מריצים את הפקודה הבאה:
/installer-scripts/jetbrains-installer.sh clion
התאמה אישית של קובצי הגדרה של סביבות פיתוח משולבות (IDE) של JetBrains
אם מצוין ספריית בית מתמשכת בהגדרת תחנות העבודה, קובצי ההגדרות $IDE.vmoptions ו-$IDE.properties נשמרים אוטומטית בתמונות הבסיס של Cloud Workstations עם סביבות פיתוח משולבות (IDE) של JetBrains. כדי לשנות את מיקום ברירת המחדל של הקבצים האלה, מציינים את משתנה הסביבה CLOUD_WORKSTATIONS_JETBRAINS_PERISTED_CONFIG_DIR.
מידע נוסף זמין במאמר /etc/workstation-startup.d/120_persist-jetbrains-configs.sh בכל תמונת בסיס של JetBrains, שבו מוסבר איך Cloud Workstations מגדיר את זה כברירת מחדל.
הרחבת תמונת בסיס של Docker באמצעות Cloud Code ל-IntelliJ
קטע קוד ה-Dockerfile הבא מרחיב תמונת 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.
אפשר גם להעתיק את כתובת ה-URL של קובץ .vsix מקישור ההורדה של כל תוסף.
אם פותחים את
Extensions Marketplace מתחנת עבודה, האפשרות Install (התקנה) מופיעה במקום Download (הורדה).
הגדרות ברירת המחדל של Code OSS ל-Cloud Workstations
מידע מפורט על אחסון ההגדרות ב-Code OSS עבור Cloud Workstations זמין במאמר התאמה אישית של ההגדרות.
אם מציינים ספריית בית קבועה בהגדרות של תחנות העבודה, אפשר להגדיר הגדרות ברירת מחדל ל-Code OSS עבור Cloud Workstations על ידי הוספת סקריפט לטעינה בזמן ההפעלה שכותב הגדרות ל-$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 לא יפעל כצפוי. מידע נוסף מופיע בהערה החשובה בקטע שימוש בקובץ אימג' של קונטיינר מותאם אישית.
בדיקת קובץ אימג' של קונטיינר בהתאמה אישית
אחרי שהקונטיינר מסיים את הבנייה, אפשר לבדוק אותו באמצעות הפקודה הבאה:
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 כדי לבדוק תלות נוספת שהוספתם.
קובעים מועדים לבנייה כדי לבנות מחדש את קובצי האימג' של הקונטיינר מדי שבוע, או קוראים איך מבצעים אוטומציה של בנייה מחדש של קובצי אימג' של קונטיינר.
המאמרים הבאים
- אוטומציה של בנייה מחדש של קובצי אימג' של קונטיינרים כדי לסנכרן עדכונים של קובצי אימג' בסיסיים באמצעות Cloud Build ו-Cloud Scheduler.
- להגדיר שיטות אבטחה מומלצות.
- מידע נוסף על ניתוח ארטיפקטים