Die von Cloud Workstations bereitgestellten vorkonfigurierten Basis-Images enthalten nur eine minimale Umgebung mit IDE, einfachen Linux-Terminal- und Sprachtools sowie einem sshd
-Server. Wenn Sie die Umgebungseinrichtung für bestimmte Anwendungsfälle bei der Entwicklung beschleunigen möchten, können Sie benutzerdefinierte Container-Images erstellen, die diese Basis-Images so erweitern, dass Tools und Abhängigkeiten vorinstalliert und Automatisierungsskripts ausgeführt werden.
Für benutzerdefinierte Container-Images empfehlen wir, eine Pipeline einzurichten, die diese Images automatisch neu erstellt, wenn das Cloud Workstations-Basis-Image aktualisiert wird. Außerdem sollten Sie ein Tool zum Scannen von Containern wie Artefakteanalyse ausführen, um alle hinzugefügten Abhängigkeiten zu prüfen. Sie sind für die Verwaltung und Aktualisierung von benutzerdefinierten Paketen und Abhängigkeiten, die benutzerdefinierten Images hinzugefügt wurden, verantwortlich.
Hinweise
Sie benötigen eine Maschine mit Tools, um Container-Images wie Docker zu erstellen und Images über die Google Cloud CLI in Artifact Registry (oder Container Registry) zu übertragen. Sie können Cloud Workstations oder den Cloud Shell-Editor verwenden, um diese Schritte auszuführen, bei denen diese Tools vorinstalliert sind.
Wählen Sie das gewünschte Basis-Image aus der Liste der unterstützten Basis-Images aus, z. B.
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
.Alternativ können Sie ein eigenes Container-Image oder externe Container-Images verwenden. Folgen Sie dazu der Anleitung unter Eigenes Container-Image verwenden.
Erstellen Sie in diesem Ordner einen Ordner wie
CUSTOM_IMAGE_FOLDER
und ein Dockerfile, das das ausgewählte Basis-Image erweitert, wie in den folgenden Beispielen gezeigt.
Struktur des Basis-Images von Cloud Workstations
Basis-Images von Cloud Workstations haben die folgende definierte Struktur:
- Die Einstiegspunktdatei für das Basis-Image ist auf
/google/scripts/entrypoint.sh
festgelegt. Beim Start führen Basis-Images Dateien unter
/etc/workstation-startup.d/*
in lexikografischer Reihenfolge aus, um die Workstationumgebung zu initialisieren.Die Dateien und ihr Verhalten sehen so aus:
000_configure-docker.sh
: Konfiguriert Docker auf der Workstation und führt es aus.010_add-user.sh
: Erstellt den Standardnutzer in Cloud Workstations.Da der nichtflüchtige Speicher dynamisch an den Container angehängt wird, müssen Nutzer beim Start der Workstation und nicht im Dockerfile hinzugefügt werden.
020_start-sshd.sh
: startet densshd
-Dienst im Container.110_start-$IDE.sh
: Startet die IDE für das Image.
Cloud Workstations speichert Docker-Images im Basisverzeichnis unter
/home/.docker_data
, sodass die Images zwischen Sitzungen beibehalten werden.
Wenn Sie beim Start der Workstation zusätzliche Funktionen hinzufügen möchten, fügen Sie Ihre Skripts im Verzeichnis /etc/workstation-startup.d/
hinzu:
Skripts in diesem Verzeichnis werden standardmäßig als Root ausgeführt. Verwenden Sie den Befehl
runuser
, um die Skripts als ein anderer Nutzer auszuführen.Da Skripts in lexikografischer Reihenfolge ausgeführt werden, sollten Sie ihnen eine dreistellige Zahl voranstellen, die größer als 200 ist.
Änderungen am Basisverzeichnis
Wenn in der Workstationkonfiguration ein nichtflüchtiges Basisverzeichnis angegeben ist (dies ist das Standardverhalten), wird zur Laufzeit dynamisch ein nichtflüchtiger Speicher, der das Basisverzeichnis speichert, an den Container angehängt. Bei diesem Vorgang werden Änderungen überschrieben, die zum Zeitpunkt des Container-Images am Verzeichnis /home
vorgenommen wurden.
Ändern Sie das Verzeichnis /home
zur Containerlaufzeit, um die Aktualisierungen beizubehalten. Fügen Sie dazu im Verzeichnis /etc/workstation-startup.d
ein Skript hinzu oder fügen Sie eine nutzerspezifische Konfiguration im Verzeichnis /etc/profile.d
hinzu.
Sie können den Prozess beschleunigen, indem Sie das Setup-Skript als Hintergrundprozess ausführen. Fügen Sie dazu am Ende des Befehls ein kaufmännisches Und-Zeichen (&
) hinzu, um den Start des Containers zu vermeiden.
Einige Beispiele für die Konfiguration der Build-Zeit, die in die Containerlaufzeit verschoben werden sollte:
git
-Konfiguration pro Nutzergit
Repositories, die in das Basisverzeichnis geklont wurden- Direkte Nutzerkonfiguration, z. B. das Ablegen von Dateien in einem
$HOME/.config
-Verzeichnis - Nutzer erstellen
Nutzer erstellen und ändern
Da der nichtflüchtige Speicher zur Laufzeit dynamisch an den Container angehängt wird, müssen Nutzer beim Start der Workstation und nicht im Dockerfile hinzugefügt werden. Wenn Sie weitere Nutzer ändern oder erstellen möchten, sollten Sie /etc/workstation-startup.d/010_add-user.sh
aktualisieren oder ein eigenes Skript erstellen, das beim Start ausgeführt wird.
Außerdem können Sie das Bash-Standardprofil für die Nutzer ändern, indem Sie die Dateien in /etc/profile.d
aktualisieren.
Vorkonfigurierte sichere APT-Schlüssel aktualisieren
In Cloud Workstations-Basis-Images sind eine Reihe von Tools vorinstalliert, die über Secure APT aus verschiedenen Drittanbieter-Repositories abgerufen wurden. Im Rahmen des Installationsvorgangs werden die von den Repository-Inhabern bereitgestellten öffentlichen Schlüssel mit gpg
importiert und in einzelne Dateien unter /usr/share/keyrings/
platziert. Auf diese Dateien wird in den entsprechenden list
-Dateien unter /etc/apt/sources.list.d/
verwiesen.
Dadurch kann apt
die Integrität eines bestimmten Repositorys bei der Interaktion mit diesem prüfen.
Gelegentlich können Inhaber von Drittanbieter-Repositories den öffentlichen Schlüssel ändern, mit dem die Integrität ihres Repositorys validiert wird. Dies führt dazu, dass apt
bei der Interaktion mit dem Repository einen Fehler anzeigt. Zum Beheben dieses potenziellen Problems können Sie /google/scripts/refresh-preinstalled-apt-keys.sh
verwenden. Damit werden die neuesten Versionen vorinstallierter öffentlicher Schlüssel abgerufen und noch einmal importiert.
Installierte IDE-Versionen auflisten
Auf mehreren Cloud Workstations-Basis-Images ist eine IDE vorinstalliert. Zur Vereinfachung können Sie sich das enthaltene /google/scripts/preinstalled-ide-versions.sh
-Skript ansehen, das die Namen und Versionsinformationen der im Image installierten IDEs enthält.
Root-Berechtigungen von sudo
deaktivieren
Der Standardnutzer der Workstation hat in diesen Containern sudo
-Root-Zugriffsberechtigungen. Wenn Sie den Root-Zugriff auf den Docker-Container deaktivieren möchten, legen Sie beim Erstellen der Workstationkonfiguration die Umgebungsvariable CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO
auf true
fest.
So legen Sie diese Umgebungsvariable über die Google Cloud Console beim Erstellen der Workstationkonfiguration fest:
- Schließen Sie beim Erstellen der Workstationkonfiguration die Konfiguration für „Allgemeine Informationen“ und die Maschinenkonfiguration ab.
- Maximieren Sie im Dialogfeld Umgebungsanpassung den Bereich Erweiterte Containeroptionen und wählen Sie Umgebungsvariablen aus.
- Klicken Sie auf addVariable hinzufügen.
- Geben Sie
CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO
undtrue
als Wert ein.
Eigenes Container-Image verwenden
Sie können auch ein eigenes Container-Image oder externe Container-Images verwenden, sofern diese Linux-basiert sind und beim Start des Containers einen blockierenden Prozess ausführen.
Beim Einrichten des Dockerfile muss die Anweisung ENTRYPOINT
einen Blockierprozess wie sleep infinity
ausführen, damit der Container weiter ausgeführt wird, anstatt den Container sofort zu beenden. Alternativ können Sie in der Workstationkonfiguration das Feld config.container.args
festlegen, um einen Blockierprozess anzugeben.
Wenn Sie Ihr eigenes Container-Image verwenden, beachten Sie Folgendes:
Cloud Workstations erfordert keine zusätzlichen Skripts aus dem Basis-Image von Cloud Workstations.
Sie können sich jedoch die Skripts im Verzeichnis
/etc/workstation-startup.d/
in einem Container ansehen, in dem das Cloud Workstations-Basis-Image ausgeführt wird. Die Dateinamen geben an, welche Funktion die einzelnen Skripts haben.Wir empfehlen, einen SSH-Server im Container auszuführen. Unter
/etc/workstation-startup.d/020_start-sshd.sh
im standardmäßigen Basis-Image finden Sie Informationen dazu, wie Cloud Workstations dies standardmäßig einrichtet.Wir empfehlen, dass du deine Standard-IDE oder deinen Webserver auf Port
80
ausführst.
Cloud Workstations-Basis-Images erweitern
Wenn Sie ein Cloud Workstations-Basis-Image erweitern, um ein benutzerdefiniertes Image für Ihre Workstationumgebung zu erstellen, können Sie drei Ansätze verfolgen:
- Fügen Sie in
Dockerfile
weitere statische Assets hinzu, die Sie hinzufügen möchten. - Fügen Sie unter
/etc/workstation-startup.d/
weitere ausführbare Dateien hinzu, um den ausgeführten Container anzupassen. Dateien in diesem Verzeichnis werden beim Containerstart automatisch in lexikografischer Reihenfolge ausgeführt. Sie können also dem Dateinamen ein Präfix voranstellen, damit die Datei während des Starts der Workstation zur richtigen Zeit ausgeführt wird. - Überschreiben Sie
ENTRYPOINT
in Ihrem Dockerfile, um den Containerstart vollständig anzupassen.
Beispiele für benutzerdefinierte Dockerfiles
Dieser Abschnitt enthält Beispielszenarien und Anleitungen zum Erstellen eigener Dockerfiles.
Container-Image mit vorinstalliertem emacs
Führen Sie die folgenden Befehle aus, um ein Container-Image mit vorinstalliertem emacs
zu erstellen:
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 mit Nutzeranpassung
So passen Sie ein Container-Image an:
Erstellen Sie in
/etc/workstation-startup.d/*
ein Skript, das nach010_add-user.sh
ausgeführt wird, z. B.011_customize-user.sh
:#!/bin/bash # Create new group groupadd $GROUP # Add the user to a new group usermod -a -G $GROUP $USERNAME
Ersetzen Sie
$GROUP
durch den neuen Gruppennamen und$USERNAME
durch den Nutzernamen des Nutzers.Wenn Sie das Skript
011_customize-user.sh
genannt haben, fügen Sie dem Image in Ihrem Dockerfile Folgendes hinzu und machen es ausführbar: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
Container-Image, das Container-Umgebungsvariablen in SSH-Sitzungen festlegt
Auf Workstationkonfigurations- oder Workstationebene festgelegte Umgebungsvariablen werden mit dem Befehl „entrypoint“ an direkte Unterprozesse übergeben. Dies schließt die IDE in den vorkonfigurierten Basis-Images ein. SSH-Sitzungen sind jedoch keine untergeordneten Prozesse des Einstiegspunkts und daher wurden diese benutzerdefinierten Umgebungsvariablen nicht festgelegt.
Zum Festlegen dieser Umgebungsvariablen in den SSH-Sitzungen richten Sie ein benutzerdefiniertes Container-Image ein, das diese Umgebungsvariablen vom Einstiegspunktbefehl des Containers an die Datei /etc/environment
weiterleitet.
Gehen Sie dazu folgendermaßen vor:
Erstellen Sie in
/etc/workstation-startup.d/*
ein Skript, das nach010_add-user.sh
ausgeführt wird, z. B.011_add-ssh-env-variables.sh
:#!/bin/bash # echo "CUSTOM_ENV_VAR=$CUSTOM_ENV_VAR" >> /etc/environment
Ersetzen Sie
CUSTOM_ENV_VAR
durch den gewünschten Namen der Umgebungsvariablen.Wenn Sie das Skript
011_add-ssh-env-variables.sh
genannt haben, fügen Sie dem Image in Ihrem Dockerfile Folgendes hinzu und machen es ausführbar: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
Container-Image, das die X11-Weiterleitung für SSH-Sitzungen aktiviert
Mit der X11-Weiterleitung können Sie Remote-Anwendungen starten und die Anwendungsanzeige an einen lokalen Computer weiterleiten.
Um ein Container-Image zu erstellen, das die X11-Weiterleitung aktiviert, ändern Sie die OpenSSH-Daemon-Konfigurationsdatei (/etc/ssh/sshd_config
), die von den Cloud Workstations-Basis-Images bereitgestellt wird. Fügen Sie dazu X11Forwarding yes
(um die X11-Weiterleitung zuzulassen) und AddressFamily inet
an (damit nur IPv4 verwendet wird). Weitere Informationen zu diesen Suchbegriffen finden Sie auf den OpenBSD-Webseiten zu AddressFamily
und X11Forwarding
.
Hier sehen Sie ein Beispiel-Dockerfile, das die erforderlichen Änderungen vornimmt:
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 in ein anderes Container-Image kopieren
Bei einem mehrstufigen Build können Sie mehrere FROM
-Anweisungen im Dockerfile verwenden. Jeder FROM
-Befehl kann eine andere Basis verwenden und ermöglicht das Kopieren von Artefakten zwischen Build-Phasen. Wenn Sie Code OSS for Cloud Workstations einem anderen Container-Image hinzufügen möchten, verwenden Sie einen mehrstufigen Build, um den Anwendungsordner /opt/code-oss
in Ihr Image zu kopieren. Wenn Sie Code OSS für Cloud Workstations zum Containerstart starten möchten, kopieren Sie zusätzlich das Skript /etc/workstation-startup.d/110_start-code-oss.sh
in Ihren Container.
Hier sehen Sie ein Beispiel-Dockerfile, mit dem Code OSS in das IntelliJ Ultimate-Image von JetBrains kopiert wird. Anschließend können Sie mit beiden IDEs interagieren:
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"]
Container-Image, das IDE-Erweiterungen in Code OSS für Cloud Workstations für die Java-Entwicklung vorinstalliert
Führen Sie die folgenden Befehle aus, um ein Container-Image zu erstellen, mit dem IDE-Erweiterungen in der Code OSS for Cloud Workstations for Java-Entwicklung zum Build-Zeitpunkt vorinstalliert werden:
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
Vorinstallierte Erweiterungen werden als integrierte Erweiterungen betrachtet.
Sie können diese Erweiterungen dann nicht aktualisieren und sie werden möglicherweise nicht im Bereich „Installiert“ im
Extensions Marketplace angezeigt.
Sie finden Ihre integrierten Erweiterungen jedoch, indem Sie nach
@builtin
suchen.
Eine weitere Möglichkeit, Erweiterungen beim Start zu installieren, ist die Ausführung eines Startskripts.
Fügen Sie beispielsweise das folgende Startskript unter /etc/workstation-startup.d/120_install_extensions.sh
ein:
/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
Mit dieser Methode wird die Erweiterung in im Extensions Marketplace angezeigt und kann von dort aus aktualisiert werden.
JetBrains-IDEs und -Plug-ins in Basis-Images installieren
Wenn Sie Docker-Images für Workstationkonfigurationen anpassen, können Sie JetBrains-IDEs und -Plug-ins wie Cloud Code for IntelliJ im Basis-Image installieren. Cloud Workstations-Basis-Images für JetBrains-Produkte enthalten die folgenden Skripts zur Unterstützung:
jetbrains-installer.sh
: JetBrains-IDEs installierenplugin-installer.sh
: Plug-ins wie Cloud Code for IntelliJ installieren
Verwenden Sie diese Skripts nach Bedarf, um das Basis-Image anzupassen, sie mit einem Startskript aufzurufen oder nach dem Start der Workstation auszuführen.
Installationsskripts
Wenn Sie die Quelldateien für die Skripts jetbrains-installer.sh
und plugin-installer.sh
aufrufen möchten, starten Sie eine Workstation mit einer Workstationkonfiguration, die eines der vordefinierten Images von JetBrains verwendet. Stellen Sie dann eine Verbindung zur Workstation entweder über JetBrains Gateway oder über SSH her und durchsuchen Sie dann die Skriptdateien im Verzeichnis installer-scripts
, das sich im Stammverzeichnis befindet.
Wir empfehlen, diese Skripts zum Zeitpunkt des Container-Builds auszuführen. Vermeiden Sie die Ausführung auf einer bereits gestarteten Workstation.
Plug-in-Installationsskript verwenden
Das Skript plugin-installer.sh
verwendet die folgende Syntax:
plugin-installer.sh [-v VERSION] [-d DESTINATION-DIRECTORY] [-c CHECKSUM] [-f] PLUGIN_ID
Ersetzen Sie Folgendes:
VERSION
: optionale Versionsnummer des zu installierenden Plug-ins.DESTINATION-DIRECTORY
: optionales Verzeichnis, in dem das Plug-in installiert werden soll. Wenn kein Wert angegeben ist, wird das Arbeitsverzeichnis verwendet.CHECKSUM
: Optionale SHA-256-Prüfsumme des angeforderten Plug-ins.-f
: Falls angegeben, werden vorhandene Plug-ins überschrieben.PLUGIN_ID
: die erforderliche numerische Plug-in-ID vom JetBrains Marketplace. Um beispielsweise Dart hinzuzufügen, verwenden Sie6351
als PLUGIN_ID. Wenn Sie Cloud Code for IntelliJ hinzufügen möchten, verwenden Sie8079
als PLUGIN_ID.
Führen Sie beispielsweise den folgenden Befehl aus, um die neueste Version des Dart-Plug-ins in IntelliJ zu installieren:
plugin-installer.sh -d /opt/ideaIU/plugins/ 6351
JetBrains-Installationsskript verwenden
Es wird empfohlen, das JetBrains-Installationsskript zu verwenden, wenn Sie ein vorkonfiguriertes Basis-Image für JetBrains-IDEs erweitern.
Das Skript jetbrains-installer.sh
verwendet die folgende Syntax:
jetbrains-installer.sh IDE [ pinned|latest ]
Ersetzen Sie Folgendes:
IDE
: zu installierende JetBrains-IDE Sie müssen eine der folgenden IDE-Abkürzungen verwenden:IDE Produkt installiert cl
CLion clion
CLion go
GoLand goland
GoLand iiu
Intellij Ultimate intellij
Intellij Ultimate pcp
PyCharm Professional pycharm
PyCharm Professional ps
PHPStorm phpstorm
PHPStorm rd
Rider rider
Rider rm
RubyMine rubymine
RubyMine ws
WebStorm webstorm
WebStorm pinned|latest
: Optional. Verwenden Sie entweder die angepinnte oder die neueste Version der IDE. Die Standardeinstellung istlatest
.
Führen Sie beispielsweise den folgenden Befehl aus, um die neueste Version der Clion-Anwendung zu installieren:
jetbrains-installer.sh clion
JetBrains-IDE-Konfigurationsdateien anpassen
Wenn in der Workstationkonfiguration ein nichtflüchtiges Basisverzeichnis angegeben ist, speichern die Cloud Workstations-Basis-Images mit JetBrains-IDEs die Konfigurationsdateien $IDE.vmoptions
und $IDE.properties
automatisch. Wenn Sie den Standardspeicherort dieser Dateien überschreiben möchten, geben Sie die Umgebungsvariable CLOUD_WORKSTATIONS_JETBRAINS_PERISTED_CONFIG_DIR
an.
Weitere Informationen finden Sie unter /etc/workstation-startup.d/120_persist-jetbrains-configs.sh
in allen JetBrains-Basis-Images, um zu erfahren, wie Cloud Workstations dies standardmäßig einrichtet.
Basis-Docker-Image mit Cloud Code for IntelliJ erweitern
Das folgende Dockerfile-Snippet erweitert ein Basis-Docker-Image mit Cloud Code for IntelliJ. Dazu wird 8079
als erforderliche Plug-in-ID eingefügt.
Im Beispiel werden optional auch version 22.9.3-222
als Versionsnummer, /opt/ideaIU/plugins/
als Zielverzeichnis und 89628279ed9042c526a81facc09bf53f8fb8b83b4595b0d329d94c1611e0c379
als Prüfsumme angegeben:
...
# 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
...
Zusätzliche IDE-Erweiterungen in Code OSS für Cloud Workstations installieren
Weitere IDE-Erweiterungen finden Sie unter Open VSX Registry.
Sie können die URL der Datei .vsix
auch ermitteln, indem Sie die URL aus dem Download-Link der jeweiligen Erweiterung kopieren.
![Öffnen Sie die VSX-Seite für die Go-Spracherweiterung mit der Schaltfläche „Herunterladen“.](https://cloud.google.com/static/workstations/images/open-vsx-go-ext-dark-mode.png?authuser=7&hl=de)
Wenn Sie den Extensions Marketplace von über eine Workstation öffnen, wird anstelle von Herunterladen die Option Installieren angezeigt.
Standardcode-OSS-Einstellungen für Cloud Workstations
Ausführliche Informationen zum Speichern von Einstellungen in Code OSS for Cloud Workstations finden Sie unter Einstellungen anpassen.
Wenn Sie in der Workstationkonfiguration ein persistentes Basisverzeichnis angeben, können Sie Standardeinstellungen für Code OSS für Cloud Workstations konfigurieren. Dazu fügen Sie ein Startskript hinzu, das Einstellungen in $HOME/.codeoss-cloudworkstations/data/Machine/settings.json
schreibt.
Wenn Sie beispielsweise das Standardfarbdesign auf „Dunkel“ festlegen möchten, erweitern Sie das Basis-Editor-Image so, dass es das folgende Skript unter /etc/workstation-startup.d/150_default-ide-color-theme.sh
enthält.
cat <<< $(jq '. += {"workbench.colorTheme": "Default Dark Modern"}' settings.json) > settings.json
Benutzerdefiniertes Container-Image erstellen
Ausführliche Informationen zu Docker-Befehlen finden Sie in der Docker-Referenz. Geben Sie den folgenden Befehl ein, um den Container zu erstellen:
docker build CUSTOM_IMAGE_FOLDER -t TARGET_IMAGE
Wenn der Text vor dem Bearbeitungssymbol Bearbeiten ersetzt wird, werden die anderen Beispiele auf dieser Seite aktualisiert.
Ersetzen Sie Folgendes:
CUSTOM_IMAGE_FOLDER
ist der Pfad zu dem Ordner, den Sie zum Speichern Ihres benutzerdefinierten Images erstellt haben.TARGET_IMAGE
: der Pfad zu Ihrem Image in Artifact Registry (oder Container Registry).Beispielsweise könnte
TARGET_IMAGE
auf einen Zielbildpfad verweisen, der einem der folgenden Pfade ähnelt:*.pkg.dev/cloud-workstations-external/customimage:latest *.gcr.io/cloud-workstations-external/customimage:latest
Ersetzen Sie * bei Bedarf durch den Namen der Region und alle zusätzlichen Kennzeichnungen.
Sie können auch die Umgebungsvariable CLOUD_WORKSTATIONS_CUSTOM_IMAGE
so aktualisieren, dass sie auf das Repository verweist.
Weitere Informationen zum Speichern von Docker-Images in Artifact Registry finden Sie in den folgenden Abschnitten:
- Docker-Repository mit Artifact Registry erstellen
- Namenskonventionen für Repository- und Image-Namen.
Benutzerdefiniertes Container-Image hosten
Wir empfehlen und unterstützen Artifact Registry, um benutzerdefinierte Container-Images zu hosten. Wenn Sie GitHub oder ein anderes öffentliches oder privates Repository verwenden, funktioniert Cloud Workstations möglicherweise nicht wie erwartet. Weitere Informationen finden Sie unter dem wichtigen Hinweis im Abschnitt Benutzerdefiniertes Container-Image verwenden.
Benutzerdefiniertes Container-Image testen
Nachdem der Container erstellt wurde, können Sie ihn mit dem folgenden Befehl testen:
docker run --privileged -p LOCAL_PORT:CONTAINER_PORT TARGET_IMAGE
Ersetzen Sie Folgendes:
LOCAL_PORT
: die lokale PortnummerCONTAINER_PORT
: die Container-Portnummer
Wenn Sie beispielsweise LOCAL_PORT
:CONTAINER_PORT
durch 8080
:80
ersetzen, wird Port 8080
für die lokale Verwendung und Port 80
für die Verwendung im Container zugewiesen.
Wenn Sie das Basiseditor-Image von Cloud Workstations erweitern, führen Sie den Befehl docker
aus und testen Sie dann das Workstation-Image. Stellen Sie dazu über Ihren lokalen Browser eine Verbindung zur Workstation her oder führen Sie ssh
aus, um eine Verbindung zu Ihrem Container herzustellen:
- Wenn Sie eine Verbindung über den Browser herstellen, müssen Sie
-p 8080:80
an den Befehldocker run
übergeben und dannlocalhost:8080
öffnen. - Wenn Sie eine Verbindung über SSH herstellen möchten, müssen Sie
-p 2222:22
an den Befehldocker run
übergeben und dannssh user@localhost -p 2222
ausführen.
Benutzerdefiniertes Container-Image verwenden
Wenn Sie das benutzerdefinierte Container-Image verwenden möchten, nachdem Sie es lokal erstellt und getestet haben, übertragen Sie den Container mit dem folgenden Befehl per Push an Artifact Registry (oder Container Registry):
docker push TARGET_IMAGE
Sie können jetzt mit dem Container-Image, das Sie gerade erstellt und per Push übertragen haben, eine Workstationkonfiguration erstellen.
Weitere Informationen finden Sie unter Docker-Repository mit Artifact Registry erstellen.
Probleme beheben
Sehen Sie sich die Ausgabelogs des Containers Ihrer laufenden Workstations an, um Probleme beim Ausführen des Container-Images zu ermitteln und zu beheben.
Empfohlen: Image-Pipeline sichern
Sie sind für die Verwaltung und Aktualisierung von benutzerdefinierten Paketen und Abhängigkeiten, die benutzerdefinierten Images hinzugefügt wurden, verantwortlich.
Wenn Sie benutzerdefinierte Images erstellen, empfehlen wir Folgendes:
Erstellen Sie diese Images beim Aktualisieren des Cloud Workstations-Basis-Images automatisch neu, um Ihre Image-Pipeline zu sichern.
Führen Sie ein Container-Scantool wie die Artefaktanalyse aus, um alle zusätzlichen Abhängigkeiten zu überprüfen, die Sie hinzugefügt haben.
Planen Sie Builds, um die Images wöchentlich neu zu erstellen, oder informieren Sie sich, wie Sie die Neuerstellung von Container-Images automatisieren.
Nächste Schritte
- Automatisieren Sie die Neuerstellung von Container-Images, um Basis-Image-Updates mit Cloud Build und Cloud Scheduler zu synchronisieren.
- Best Practices für die Sicherheit einrichten
- Weitere Informationen zur Artefaktanalyse