Menyesuaikan image container

Image dasar yang telah dikonfigurasi sebelumnya yang disediakan oleh Cloud Workstations hanya berisi lingkungan minimal dengan IDE, terminal Linux dasar, dan alat bahasa, serta server sshd. Untuk mempercepat penyiapan lingkungan kasus penggunaan pengembangan tertentu, Anda dapat membuat image container kustom yang memperluas image dasar ini untuk menginstal alat dan dependensi terlebih dahulu serta menjalankan skrip otomatisasi.

Untuk image container kustom, sebaiknya siapkan pipeline untuk otomatis membangun ulang image ini saat image dasar Cloud Workstations diperbarui, selain menjalankan alat pemindaian container seperti Artifact Analysis untuk memeriksa dependensi tambahan yang Anda tambahkan. Anda bertanggung jawab untuk memelihara dan mengupdate paket kustom dan dependensi yang ditambahkan ke image kustom.

Sebelum memulai

  1. Anda memerlukan mesin dengan alat untuk membangun image container seperti Docker, dan untuk mengirim image ke Artifact Registry menggunakan Google Cloud CLI. Anda dapat menggunakan Cloud Workstations atau Cloud Shell Editor untuk melakukan langkah-langkah ini, yang telah menginstal alat ini.
  2. Pilih image dasar yang ingin Anda gunakan dari daftar image dasar yang didukung, seperti us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest.

    Atau, Anda dapat menggunakan image container Anda sendiri atau menggunakan image container eksternal dengan mengikuti petunjuk untuk Menggunakan image container Anda sendiri.

  3. Buat folder seperti CUSTOM_IMAGE_FOLDER dan Dockerfile di dalam folder ini yang memperluas image dasar yang dipilih, seperti yang ditunjukkan dalam contoh berikut.

Struktur image dasar Cloud Workstations

Image dasar Cloud Workstations memiliki struktur yang ditentukan berikut:

  • File titik entri image dasar ditetapkan ke /google/scripts/entrypoint.sh.
  • Saat memulai, image dasar menjalankan file di bagian /etc/workstation-startup.d/* dalam urutan leksikografis untuk melakukan inisialisasi lingkungan workstation.

    File dan perilakunya adalah sebagai berikut:

    • 000_configure-docker.sh: Mengonfigurasi dan menjalankan Docker di dalam workstation.
    • 010_add-user.sh: Membuat pengguna default di Cloud Workstations.

      Karena persistent disk dipasang secara dinamis ke container, pengguna harus ditambahkan saat workstation dimulai, bukan di Dockerfile.

    • 020_start-sshd.sh: Memulai layanan sshd di container.

    • 030_customize-environment.sh: Menjalankan /home/user/.workstation/customize_environment sebagai user.

    • 110_start-$IDE.sh: Memulai IDE untuk image.

  • Cloud Workstations menyimpan image Docker di direktori beranda di /home/.docker_data sehingga image dipertahankan di antara sesi.

Untuk menambahkan fungsi tambahan selama startup workstation, tambahkan skrip Anda di direktori /etc/workstation-startup.d/:

  • Skrip dalam direktori ini dijalankan sebagai root secara default. Untuk menjalankan skrip sebagai pengguna lain, gunakan perintah runuser.

  • Karena skrip dijalankan dalam urutan leksikografis, sebaiknya Anda memberi awalan pada skrip dengan angka tiga digit yang lebih besar dari 200.

Atau, jika tidak ingin memperluas image workstation, Anda dapat membuat skrip customize_environment di direktori beranda.

Modifikasi direktori utama

Jika konfigurasi workstation menentukan direktori utama persisten (yang merupakan perilaku default), persistent disk yang mendukung direktori utama akan dipasang secara dinamis ke container saat runtime. Proses ini akan menimpa modifikasi yang dilakukan pada direktori /home pada waktu build image container.

Untuk mempertahankan update, ubah direktori /home pada runtime container dengan menambahkan skrip di direktori /etc/workstation-startup.d, atau dengan menambahkan konfigurasi per pengguna di direktori /etc/profile.d. Untuk mempercepat proses, pertimbangkan untuk menjalankan skrip penyiapan sebagai proses latar belakang (tambahkan ampersand, &, ke akhir perintah) untuk menghindari pemblokiran startup container.

Beberapa contoh konfigurasi waktu build yang harus dipindahkan ke runtime container:

  • Konfigurasi git per pengguna
  • Repositori git di-clone di direktori utama
  • Konfigurasi pengguna langsung, seperti menempatkan file di direktori $HOME/.config
  • Pembuatan pengguna

Pembuatan dan modifikasi pengguna

Karena persistent disk terpasang secara dinamis ke container saat runtime, pengguna harus ditambahkan saat workstation dimulai, bukan di Dockerfile. Untuk mengubah atau membuat pengguna tambahan, sebaiknya perbarui /etc/workstation-startup.d/010_add-user.sh, atau buat skrip Anda sendiri yang dijalankan saat startup.

Selain itu, Anda dapat mengubah profil bash default untuk pengguna dengan mengupdate file di /etc/profile.d.

Mengupdate kunci Secure APT yang telah dikonfigurasi sebelumnya

Image dasar Cloud Workstations dilengkapi dengan sejumlah alat yang diperoleh dari berbagai repositori pihak ketiga menggunakan Secure APT. Sebagai bagian dari proses penginstalan, kunci publik yang disediakan oleh pemilik repositori diimpor menggunakan gpg dan ditempatkan ke dalam file individual di bagian /usr/share/keyrings/. File ini direferensikan dari file list yang sesuai di bagian /etc/apt/sources.list.d/. Hal ini memungkinkan apt memverifikasi integritas repositori tertentu saat berinteraksi dengannya.

Terkadang, pemilik repositori pihak ketiga dapat memutuskan untuk mengubah kunci publik yang digunakan untuk memvalidasi integritas repositori mereka, yang menyebabkan apt menampilkan error saat berinteraksi dengannya. Untuk mengatasi potensi masalah ini, Anda dapat menggunakan /google/scripts/refresh-preinstalled-apt-keys.sh, yang memperoleh versi terbaru kunci publik yang telah diinstal sebelumnya dan mengimpornya kembali.

Anda juga dapat menjalankan skrip ini langsung di Dockerfile kustom sebelum menjalankan apt-get update:

# Refresh the preinstalled APT keys
RUN /google/scripts/refresh-preinstalled-apt-keys.sh

RUN apt-get update

Mencantumkan versi IDE yang diinstal

Beberapa image dasar Cloud Workstations dilengkapi dengan IDE yang telah diinstal sebelumnya. Untuk memudahkan, lihat skrip /google/scripts/preinstalled-ide-versions.sh yang disertakan, yang mencantumkan informasi nama dan versi IDE yang diinstal dalam image.

Menonaktifkan hak istimewa root sudo

Pengguna workstation default memiliki hak istimewa akses root sudo di container ini. Untuk menonaktifkan akses root ke container Docker, tetapkan variabel lingkungan CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO ke true saat membuat konfigurasi workstation.

Untuk menetapkan variabel lingkungan ini melalui konsol Google Cloud saat membuat konfigurasi workstation, ikuti langkah-langkah berikut:

  1. Saat membuat konfigurasi workstation, selesaikan konfigurasi untuk Informasi dasar dan Konfigurasi mesin.
  2. Pada dialog Environment customization, luaskan bagian Advanced container options, lalu pilih Variabel lingkungan.
  3. Klik addTambahkan variabel.
  4. Masukkan CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO dan true sebagai nilai.

Menyesuaikan tanpa memperluas gambar

Untuk memudahkan, semua image dasar Cloud Workstations memeriksa keberadaan file yang dapat dieksekusi yang terletak di /home/user/.workstation/customize_environment dan, jika ada, menjalankannya di latar belakang sebagai user. Dengan begitu, Anda dapat menjalankan skrip atau biner apa pun saat startup. Tidak seperti .profile atau .bashrc, skrip hanya berjalan sekali saat workstation dimulai, bukan sekali untuk setiap login shell.

Karena skrip customize_environment berjalan sebagai user, pastikan untuk memperbarui izin seperlunya saat menulis skrip. Misalnya, jika Anda ingin menginstal Emacs setiap kali workstation dimulai, konten customize_environment mungkin mirip dengan berikut ini:

#!/bin/bash
sudo apt-get update
sudo apt-get install -y emacs

Log eksekusi untuk customize_environment dapat ditemukan di container di /var/log/customize_environment dan juga ditulis ke log output container. Setelah customize_environment berhasil dieksekusi, file akan dibuat di /var/run/customize_environment_done. Karena customize_environment berjalan secara paralel dengan startup Workstation, paket yang diinstal oleh skrip dapat tersedia segera setelah workstation Anda dimulai.

Mencegah waktu tunggu tidak ada aktivitas

Untuk memudahkan, semua image dasar Cloud Workstations menyertakan skrip yang telah diinstal sebelumnya di /google/scripts/keep_alive.sh. Skrip ini mengirimkan pesan keep-alive reguler, yang dapat mencegah workstation dinonaktifkan karena waktu tunggu tidak ada aktivitas saat Anda menjalankan proses latar belakang tanpa interaksi langsung.

Mencegah waktu tunggu tidak ada aktivitas dengan agen AI

Selain itu, image dasar Cloud Workstations menyertakan contoh skrip konfigurasi agen di bagian /google/samples/agents/keepalive/. Konfigurasi contoh ini memungkinkan Anda mengonfigurasi agen coding AI (seperti Claude Code dan Antigravity CLI) di dalam workstation untuk otomatis menjaga workstation tetap aktif saat agen tersebut aktif mengerjakan tugas. Saat agen menyelesaikan tugasnya atau dijeda untuk menunggu input pengguna, skrip akan berhenti mengirim pesan keep-alive, sehingga workstation akan mengalami waktu tunggu habis karena tidak ada aktivitas. Konfigurasi ini berfungsi paling baik jika konfigurasi workstation disetel untuk menggunakan penangguhan workstation (idleAction disetel ke SUSPEND), sehingga workstation dapat menyimpan status memori dan melanjutkan dengan lancar saat Anda kembali.

Untuk mengetahui informasi selengkapnya tentang cara menyiapkan alur kerja yang dibantu agen dan hook keep-alive, lihat Pengembangan yang dioptimalkan agen.

Menggunakan image container Anda sendiri

Anda juga dapat menggunakan image container Anda sendiri atau menggunakan image container eksternal, asalkan berbasis Linux dan menjalankan proses pemblokiran saat container dimulai.

Saat menyiapkan Dockerfile, petunjuk ENTRYPOINT harus menjalankan proses pemblokiran seperti sleep infinity agar container terus berjalan, bukan langsung keluar. Atau, dalam konfigurasi workstation, Anda dapat menetapkan kolom config.container.args untuk menentukan proses pemblokiran.

Saat menggunakan image container Anda sendiri, perhatikan hal berikut:

  • Cloud Workstations tidak memerlukan skrip tambahan dari image dasar Cloud Workstations.

    Namun, Anda dapat melihat skrip di direktori /etc/workstation-startup.d/ dalam container yang menjalankan image dasar Cloud Workstations. Nama file menunjukkan fungsi setiap skrip.

  • Sebaiknya jalankan server SSH di container. Lihat /etc/workstation-startup.d/020_start-sshd.sh di image dasar default untuk mempelajari cara Cloud Workstations menyiapkan hal ini secara default.

  • Sebaiknya jalankan IDE atau server web default Anda di port 80.

Google Cloud menyediakan image dasar standar yang dapat Anda gunakan untuk membangun image container kustom sepenuhnya.

Memperluas image dasar Cloud Workstations

Saat memperluas image dasar Cloud Workstations untuk membuat image kustom bagi lingkungan workstation, Anda dapat menggunakan tiga pendekatan:

  1. Perbarui Dockerfile untuk menyertakan aset statis tambahan yang ingin Anda tambahkan.
  2. Tambahkan file yang dapat dieksekusi tambahan di bagian /etc/workstation-startup.d/ untuk menyesuaikan container yang sedang berjalan. File di direktori ini otomatis berjalan dalam urutan leksikografis saat startup container, sehingga Anda dapat memberi awalan pada nama file untuk menjalankannya pada waktu yang tepat selama startup workstation.
  3. Ganti ENTRYPOINT di Dockerfile Anda untuk menyesuaikan sepenuhnya startup container Anda.

Contoh Dockerfile kustom

Bagian ini memberikan contoh skenario dan petunjuk untuk membuat Dockerfile Anda sendiri.

Image container dengan emacs yang telah diinstal sebelumnya

Untuk membuat image container dengan emacs yang sudah diprainstal, jalankan perintah berikut:

FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest

RUN sudo apt update
RUN sudo apt install -y emacs

Image container dengan penyesuaian pengguna

Ikuti langkah-langkah berikut untuk menyesuaikan image container:

  1. Buat skrip di /etc/workstation-startup.d/* yang berjalan setelah 010_add-user.sh—misalnya, 011_customize-user.sh:

    #!/bin/bash
    # Create new group
    groupadd $GROUP
    # Add the user to a new group
    usermod -a -G $GROUP $USERNAME
    

    Ganti $GROUP dengan nama grup baru dan $USERNAME dengan nama pengguna.

  2. Dengan asumsi bahwa Anda memberi nama skrip, 011_customize-user.sh, tambahkan berikut ini ke image di Dockerfile dan buat agar dapat dieksekusi:

    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
    

Image container yang menetapkan variabel lingkungan container dalam sesi SSH

Variabel lingkungan yang ditetapkan di tingkat konfigurasi workstation atau workstation diteruskan ke subproses langsung menggunakan perintah titik entri. Hal ini mencakup IDE dalam image dasar yang telah dikonfigurasi sebelumnya. Namun, sesi SSH bukanlah proses turunan dari titik entri, dan tidak memiliki variabel lingkungan kustom ini.

Untuk menetapkan variabel lingkungan tersebut dalam sesi SSH, siapkan image container kustom yang menyampaikan variabel lingkungan ini dari perintah titik entri container ke file /etc/environment.

Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Buat skrip di /etc/workstation-startup.d/* yang berjalan setelah 010_add-user.sh—misalnya, 011_add-ssh-env-variables.sh:

    #!/bin/bash
    #
    echo "CUSTOM_ENV_VAR=$CUSTOM_ENV_VAR" >> /etc/environment
    

    Ganti CUSTOM_ENV_VAR dengan nama variabel lingkungan yang diinginkan.

  2. Dengan asumsi bahwa Anda memberi nama skrip, 011_add-ssh-env-variables.sh, tambahkan berikut ini ke image di Dockerfile dan buat agar dapat dieksekusi:

    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
    

Image container yang mengaktifkan penerusan X11 untuk sesi SSH

Penerusan X11 memungkinkan Anda memulai aplikasi jarak jauh dan meneruskan tampilan aplikasi ke mesin lokal.

Untuk membuat image container yang mengaktifkan penerusan X11, ubah file konfigurasi daemon OpenSSH (/etc/ssh/sshd_config) yang disediakan oleh image dasar Cloud Workstations dengan menambahkan X11Forwarding yes (untuk mengizinkan penerusan X11) dan AddressFamily inet (untuk memastikan bahwa hanya IPv4 yang digunakan). Untuk mengetahui informasi selengkapnya tentang kata kunci ini, lihat halaman web OpenBSD tentang AddressFamily dan X11Forwarding.

Berikut adalah contoh Dockerfile, yang melakukan perubahan yang diperlukan:

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

Menyalin Code OSS untuk Cloud Workstations ke image container lain

Dengan multi-staged builds, Anda dapat menggunakan beberapa pernyataan FROM di Dockerfile. Setiap petunjuk FROM dapat menggunakan dasar yang berbeda, dan memungkinkan penyalinan artefak di antara tahap build. Untuk menambahkan Code OSS untuk Cloud Workstations ke image container lain, gunakan build multi-tahap untuk menyalin folder aplikasi /opt/code-oss ke dalam image Anda. Jika Anda ingin memulai Code OSS untuk Cloud Workstations pada waktu startup container, salin juga skrip /etc/workstation-startup.d/110_start-code-oss.sh ke dalam container Anda.

Berikut adalah contoh Dockerfile yang menyalin Code OSS ke image JetBrains IntelliJ Ultimate. Kemudian, Anda dapat berinteraksi dengan salah satu 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"]

Image container yang melakukan pra-penginstalan ekstensi IDE di Code OSS untuk Cloud Workstations untuk pengembangan Java

Untuk membuat image container yang melakukan pra-instal ekstensi IDE di Code OSS untuk Cloud Workstations untuk pengembangan Java pada waktu build, jalankan perintah berikut:

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/

Jika Anda melakukan pra-instal ekstensi, ekstensi tersebut dianggap sebagai ekstensi bawaan. Anda tidak akan dapat mengupdate ekstensi ini dan ekstensi tersebut mungkin tidak muncul di bagian yang diinstal di Extensions Marketplace . Namun, Anda dapat menemukan ekstensi bawaan dengan menelusuri @builtin.

Cara lain untuk menginstal ekstensi saat memulai adalah dengan menjalankan skrip startup. Misalnya, sertakan skrip startup berikut di bagian /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

Dengan menggunakan metode ini, ekstensi akan muncul di Extensions Marketplace dan Anda dapat mengupdate dari sana.

Menginstal IDE dan plugin JetBrains ke dalam image dasar

Saat menyesuaikan image Docker untuk konfigurasi workstation, Anda dapat menginstal IDE dan plugin JetBrains, seperti Cloud Code untuk IntelliJ, ke dalam image dasar. Image dasar Cloud Workstations untuk produk JetBrains menyertakan skrip berikut untuk membantu Anda:

  • jetbrains-installer.sh: menginstal JetBrains IDE
  • plugin-installer.sh: menginstal plugin, seperti Cloud Code for IntelliJ

Gunakan skrip ini sesuai kebutuhan untuk menyesuaikan image dasar, memanggilnya dengan skrip startup, atau menjalankannya setelah memulai workstation.

Skrip penginstal

Untuk melihat file sumber untuk skrip jetbrains-installer.sh dan plugin-installer.sh, mulai workstation menggunakan konfigurasi workstation yang menggunakan salah satu image yang telah ditetapkan JetBrains, hubungkan ke workstation melalui JetBrains Gateway atau melalui SSH, lalu jelajahi file skrip di direktori installer-scripts, yang terletak di direktori root.

Sebaiknya jalankan skrip ini pada waktu build container. Hindari menjalankannya di workstation yang sudah dimulai.

Menggunakan skrip penginstal plugin

Skrip plugin-installer.sh menggunakan sintaksis berikut:

plugin-installer.sh [-v VERSION] [-d DESTINATION-DIRECTORY] [-c CHECKSUM] [-f] PLUGIN_ID

Ganti kode berikut:

  • VERSION: nomor versi opsional plugin yang akan diinstal.
  • DESTINATION-DIRECTORY: direktori opsional tempat plugin harus diinstal. Jika tidak ditentukan, direktori kerja akan digunakan.
  • CHECKSUM: checksum SHA-256 opsional dari plugin yang diminta.
  • -f: jika ditentukan, plugin yang ada akan ditimpa.
  • PLUGIN_ID: ID plugin numerik yang diperlukan dari marketplace JetBrains. Misalnya, untuk menambahkan Dart, gunakan 6351 sebagai PLUGIN_ID. Untuk menambahkan Cloud Code untuk IntelliJ, gunakan 8079 sebagai PLUGIN_ID.

Misalnya, untuk menginstal versi terbaru plugin Dart di IntelliJ, jalankan perintah berikut:

/installer-scripts/plugin-installer.sh -d /opt/ideaIU/plugins/ 6351

Menggunakan skrip penginstal JetBrains

Sebaiknya gunakan skrip penginstal JetBrains saat memperluas image dasar yang telah dikonfigurasi sebelumnya untuk JetBrains IDE.

Skrip jetbrains-installer.sh menggunakan sintaksis berikut:

jetbrains-installer.sh IDE [ pinned|latest ]

Ganti kode berikut:

  • IDE: JetBrains IDE yang akan diinstal. Anda harus menggunakan salah satu singkatan IDE berikut:

    IDE Produk Diinstal
    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 Pengemudi
    rider Pengendara
    rm RubyMine
    rubymine RubyMine
    ws WebStorm
    webstorm WebStorm
  • pinned|latest: Opsional - Gunakan versi IDE yang disematkan atau versi terbaru. Nilai defaultnya adalah latest.

Misalnya, untuk menginstal versi terbaru Clion, jalankan perintah berikut:

/installer-scripts/jetbrains-installer.sh clion

Menyesuaikan file konfigurasi JetBrains IDE

Jika direktori utama persisten ditentukan dalam konfigurasi workstation, image dasar Cloud Workstations dengan JetBrains IDE akan otomatis mempertahankan file konfigurasi $IDE.vmoptions dan $IDE.properties. Untuk mengganti lokasi default file ini, tentukan variabel lingkungan CLOUD_WORKSTATIONS_JETBRAINS_PERISTED_CONFIG_DIR.

Untuk mengetahui informasi selengkapnya, lihat /etc/workstation-startup.d/120_persist-jetbrains-configs.sh di image dasar JetBrains mana pun untuk mempelajari cara Cloud Workstations menyiapkan hal ini secara default.

Memperluas image Docker dasar dengan Cloud Code untuk IntelliJ

Cuplikan Dockerfile berikut memperluas image Docker dasar dengan Cloud Code untuk IntelliJ dengan menyertakan 8079 sebagai ID plugin yang diperlukan. Contoh ini juga secara opsional menentukan version 22.9.3-222 sebagai nomor versi, /opt/ideaIU/plugins/ sebagai direktori tujuan, dan 89628279ed9042c526a81facc09bf53f8fb8b83b4595b0d329d94c1611e0c379 sebagai checksum:

...
# 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
...

Menginstal ekstensi IDE tambahan di Code OSS untuk Cloud Workstations

Temukan ekstensi IDE tambahan di Open VSX Registry. Anda juga dapat menemukan URL file .vsix dengan menyalin URL dari link Download untuk ekstensi apa pun.

Halaman Open VSX untuk ekstensi bahasa Go yang menampilkan tombol Download.

Jika Anda membuka Extensions Marketplace dari workstation, Install akan muncul, bukan Download.

Setelan Code OSS for Cloud Workstations default

Untuk mengetahui informasi mendetail tentang penyimpanan setelan di Code OSS untuk Cloud Workstations, lihat Menyesuaikan setelan.

Jika Anda menentukan direktori utama persisten dalam konfigurasi workstation, Anda dapat mengonfigurasi setelan default untuk Code OSS untuk Cloud Workstations dengan menambahkan skrip startup yang menulis setelan ke $HOME/.codeoss-cloudworkstations/data/Machine/settings.json.

Misalnya, jika Anda ingin menetapkan tema warna default ke Gelap, perluas image editor dasar untuk menyertakan skrip berikut di bagian /etc/workstation-startup.d/150_default-ide-color-theme.sh

cat <<< $(jq '. += {"workbench.colorTheme": "Default Dark Modern"}' settings.json) > settings.json

Membangun image container kustom

Untuk mengetahui informasi mendetail tentang perintah Docker, lihat referensi Docker. Masukkan perintah berikut untuk membangun container Anda:

docker build CUSTOM_IMAGE_FOLDER -t TARGET_IMAGE

Perhatikan bahwa mengganti teks yang mendahului ikon edit Edit akan memperbarui contoh lain di halaman ini.

Ganti kode berikut:

  • CUSTOM_IMAGE_FOLDER: jalur ke folder yang Anda buat untuk menyimpan image kustom.
  • TARGET_IMAGE: jalur ke image Anda di Artifact Registry.

    Misalnya, TARGET_IMAGE mungkin mengarah ke jalur image target yang mirip dengan jalur berikut:

    *.pkg.dev/cloud-workstations-external/customimage:latest
    

    Ganti * sesuai kebutuhan dengan nama region dan ID tambahan apa pun.

Anda juga dapat memperbarui variabel lingkungan CLOUD_WORKSTATIONS_CUSTOM_IMAGE untuk mengarah ke repositori.

Untuk mengetahui informasi selengkapnya tentang cara menyimpan image Docker di Artifact Registry, lihat bagian berikut:

Menghosting image container kustom Anda

Untuk menghosting image container kustom, kami merekomendasikan dan mendukung Artifact Registry. Jika Anda menggunakan GitHub atau repositori publik atau pribadi lainnya, Cloud Workstations mungkin tidak berfungsi seperti yang diharapkan. Untuk mengetahui informasi selengkapnya, lihat catatan penting di bagian Menggunakan image container kustom.

Menguji image container kustom Anda

Setelah container selesai di-build, Anda dapat mengujinya dengan perintah berikut:

docker run --privileged -p LOCAL_PORT:CONTAINER_PORT TARGET_IMAGE

Ganti kode berikut:

  • LOCAL_PORT: nomor port lokal
  • CONTAINER_PORT: nomor port container

Misalnya, mengganti LOCAL_PORT:CONTAINER_PORT dengan 8080:80 akan menetapkan port 8080 untuk digunakan secara lokal dan port 80 untuk digunakan dalam container.

Jika Anda memperluas image editor dasar Cloud Workstations, jalankan perintah docker, lalu uji image workstation dengan menghubungkan ke workstation melalui browser lokal atau dengan menjalankan ssh untuk menghubungkan ke container Anda:

  • Jika Anda terhubung melalui browser, pastikan Anda meneruskan -p 8080:80 ke perintah docker run, lalu buka localhost:8080.
  • Jika Anda lebih suka terhubung melalui SSH, pastikan Anda meneruskan -p 2222:22 ke perintah docker run, lalu jalankan ssh user@localhost -p 2222.

Menggunakan image container kustom

Untuk menggunakan image container kustom setelah Anda membangun dan mengujinya secara lokal, kirim container Anda ke Artifact Registry dengan perintah berikut:

docker push TARGET_IMAGE

Sekarang Anda dapat membuat konfigurasi workstation menggunakan image container yang baru saja Anda buat dan kirim.

Untuk mengetahui informasi selengkapnya, lihat Membuat repositori Docker dengan Artifact Registry.

Men-debug masalah

Untuk menemukan dan men-debug masalah saat menjalankan image container, tinjau log output container dari workstation yang sedang berjalan.

Anda bertanggung jawab untuk mengelola dan mengupdate paket kustom dan dependensi yang ditambahkan pada image kustom.

Jika Anda membuat image kustom, sebaiknya lakukan hal berikut:

Langkah berikutnya