Menyesuaikan container image

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 penampung kustom yang memperluas image dasar ini untuk menginstal alat dan dependensi secara otomatis serta menjalankan skrip otomatisasi.

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

Sebelum memulai

  1. Anda memerlukan mesin dengan alat untuk mem-build image container seperti Docker, dan untuk mengirim image ke Artifact Registry (atau Container Registry) menggunakan Google Cloud CLI. Anda dapat menggunakan Cloud Workstations atau Cloud Shell Editor untuk melakukan langkah-langkah ini, yang telah menginstal alat ini sebelumnya.

  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 /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 dilampirkan secara dinamis ke penampung, pengguna harus ditambahkan saat workstation dimulai, bukan di Dockerfile.

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

    • 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 di direktori ini berjalan sebagai root secara default. Untuk menjalankan skrip sebagai pengguna lain, gunakan perintah runuser.

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

Modifikasi direktori utama

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

Untuk mempertahankan update, ubah direktori /home pada runtime penampung 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 penampung.

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

  • Konfigurasi git per pengguna
  • Repositori git yang di-clone di direktori beranda
  • Konfigurasi pengguna langsung, seperti menempatkan file di direktori $HOME/.config
  • Pengguna dibuat

Pembuatan dan perubahan pengguna

Karena disk persisten secara dinamis dilampirkan ke penampung 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 APT Aman yang telah dikonfigurasi sebelumnya

Image dasar Cloud Workstations sudah diinstal sebelumnya 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 setiap file di bagian /usr/share/keyrings/. File ini dirujuk 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 mendapatkan kunci publik bawaan versi terbaru dan mengimpornya kembali.

Mencantumkan versi IDE yang diinstal

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

Menonaktifkan hak istimewa root sudo

Pengguna workstation default memiliki hak istimewa akses root sudo di penampung ini. Untuk menonaktifkan akses root ke penampung 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 dan pilih Environment variables.
  3. Klik tambahkanTambahkan variabel.
  4. Masukkan CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO dan true sebagai nilai.

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

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

Saat menggunakan image penampung Anda sendiri, perhatikan hal-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 penampung yang menjalankan image dasar Cloud Workstations. Nama file menunjukkan fungsi setiap skrip.

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

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

Memperluas gambar 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 penampung yang sedang berjalan. File dalam direktori ini otomatis berjalan dalam urutan leksikografis saat penampung dimulai, sehingga Anda dapat menambahkan awalan pada nama file untuk menjalankannya pada waktu yang tepat selama startup workstation.
  3. Ganti ENTRYPOINT di Dockerfile untuk menyesuaikan startup container sepenuhnya.

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 telah diinstal sebelumnya, 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 menamai skrip, 011_customize-user.sh, tambahkan hal berikut ke image di Dockerfile dan buat skrip tersebut 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 konfigurasi workstation atau tingkat workstation diteruskan ke subproses langsung menggunakan perintah titik entri. Ini mencakup IDE dalam image dasar yang telah dikonfigurasi sebelumnya. Namun, sesi SSH bukan proses turunan dari titik entri, dan tidak memiliki variabel lingkungan kustom ini yang ditetapkan.

Untuk menetapkan variabel lingkungan tersebut dalam sesi SSH, siapkan image container kustom yang meneruskan 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 dimaksud.

  2. Dengan asumsi bahwa Anda menamai skrip, 011_add-ssh-env-variables.sh, tambahkan hal berikut ke image di Dockerfile dan buat skrip tersebut 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 komputer 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 informasi selengkapnya tentang kata kunci ini, lihat halaman web OpenBSD tentang AddressFamily dan X11Forwarding.

Berikut adalah contoh Dockerfile, yang membuat 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 Workstation ke dalam image container lain

Dengan multi-staged build, Anda dapat menggunakan beberapa pernyataan FROM dalam Dockerfile. Setiap petunjuk FROM dapat menggunakan basis yang berbeda, dan memungkinkan penulisan ulang artefak di antara tahap build. Untuk menambahkan Code OSS untuk Cloud Workstation 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 penampung, salin juga skrip /etc/workstation-startup.d/110_start-code-oss.sh ke penampung Anda.

Berikut adalah contoh Dockerfile yang menyalin Code OSS ke dalam 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 telah menginstal ekstensi IDE di Code OSS untuk Cloud Workstations untuk pengembangan Java

Untuk membuat image container yang menginstal sebelumnya 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

Jika Anda melakukan pra-penginstalan ekstensi, ekstensi tersebut akan 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 startup adalah dengan menjalankan skrip startup. Misalnya, sertakan skrip startup berikut di bagian /etc/workstation-startup.d/120_install_extensions.sh:

/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 skrip jetbrains-installer.sh dan plugin-installer.sh, mulai workstation menggunakan konfigurasi workstation yang menggunakan salah satu image standar 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 penampung. 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 for IntelliJ, gunakan 8079 sebagai PLUGIN_ID.

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

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 IDE JetBrains.

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

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

jetbrains-installer.sh clion

Menyesuaikan file konfigurasi JetBrains IDE

Jika direktori beranda persisten ditentukan dalam konfigurasi workstation, image dasar Cloud Workstations dengan IDE JetBrains 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 untuk mempelajari cara Cloud Workstation menyiapkannya secara default.

Memperluas image Docker dasar dengan Cloud Code for 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 Workstation Cloud

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.

Buka halaman VSX untuk ekstensi bahasa Go yang menampilkan tombol Download.

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

Setelan Code OSS default untuk Cloud Workstations

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

Jika menentukan direktori rumah persisten dalam konfigurasi workstation, Anda dapat mengonfigurasi setelan default untuk Code OSS untuk Cloud Workstation 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, luaskan gambar 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

Mem-build image container kustom

Untuk mengetahui informasi selengkapnya tentang perintah Docker, lihat referensi Docker. Masukkan perintah berikut untuk mem-build penampung 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 gambar kustom.
  • TARGET_IMAGE: jalur ke image Anda di Artifact Registry (atau Container Registry).

    Misalnya, TARGET_IMAGE mungkin mengarah ke jalur gambar target yang mirip dengan salah satu jalur berikut:

    *.pkg.dev/cloud-workstations-external/customimage:latest
    
    *.gcr.io/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 agar mengarah ke repositori.

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

Menghosting image container kustom

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 informasi selengkapnya, lihat catatan penting di bagian Menggunakan image penampung kustom.

Menguji image container kustom

Setelah penampung 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 penampung

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

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 terhubung ke penampung:

  • Jika Anda terhubung melalui browser, pastikan Anda meneruskan -p 8080:80 ke perintah docker run, lalu buka localhost:8080.
  • Jika Anda memilih untuk 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 mem-build dan mengujinya secara lokal, kirim container ke Artifact Registry (atau Container 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 informasi selengkapnya, lihat Membuat repositori Docker dengan Artifact Registry.

Masalah debug

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

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

Jika Anda membuat gambar kustom, sebaiknya lakukan hal berikut:

Langkah selanjutnya