第4章 開発者環境のカスタマイズ


Red Hat CodeReady Workspaces は、拡張およびカスタマイズ可能な開発者ワークスペースプラットフォームです。

Red Hat CodeReady Workspaces は、以下の 3 つの方法で拡張できます。

  • 代替の IDE は、Red Hat CodeReady Workspaces の特殊なツールを提供します。たとえば、データ分析用の Jupyter ノートブックです。代替 IDE は、Eclipse Theia またはその他の Web IDE をベースにすることができます。Red Hat CodeReady Workspaces のデフォルト IDE は Che-Theia です。
  • Che-Theia プラグインは、Che- Theia IDE に機能を追加します。これは、Visual Studio Code と互換性のあるプラグイン API に依存します。プラグインは IDE 自体から分離されます。これは、独自の依存関係を提供するために、ファイルまたはコンテナーとしてパッケージ化できます。
  • スタック は、異なる開発者の人格に対応する専用のツールセットを備えた事前設定された CodeReady Workspaces ワークスペースです。たとえば、テスト用に必要なツールのみを持つテスト用ワークベンチを事前設定することが可能です。

図4.1 CodeReady Workspaces の拡張性

ユーザーは デフォルトで CodeReady Workspaces が提供するセルフホストモードを使用して CodeReady Workspaces を拡張することができます。

4.1. Che-Theia プラグインとは

Che-Theia プラグインは、IDE から分離された開発環境の拡張です。プラグインは、ファイルまたはコンテナーとしてパッケージ化し、独自の依存関係を提供できます。

プラグインを使用して Che-Theia を拡張すると、以下の機能を有効にすることができます。

  • 言語サポート: Language Server Protocol に依存することで、サポートされる言語 を拡張します。
  • デバッガー: Debug Adapter Protocol でデバッグ機能を拡張します。
  • 開発ツール: お気に入りの Linter と、テストおよびパフォーマンスツールとして統合。
  • メニュー、パネル、およびコマンド: IDE コンポーネントに独自の項目を追加します。
  • themes: カスタムのテーマを作成し、UI を拡張するか、またはアイコンのテーマをカスタマイズします。
  • スニペット、フォーマッター、および構文の強調表示: サポートされるプログラミング言語での使用の強化。
  • KeyBindings: 環境が不安定であるように、新しいキーマップと一般的なキーバインディングを追加します。

4.1.1. Che-Theia プラグインの機能と利点

Expand
Featuresdescription利点

高速ロード

プラグインは実行時にロードされ、すでにコンパイルされています。IDE がプラグインコードを読み込んでいる。

コンパイルの時間を回避します。インストール後の手順は回避します。

セキュアなローディング

プラグインは IDE とは別にロードされます。IDE は、常に使用可能な状態のままになります。

バグがある場合には、プラグインは IDE 全体を破損しません。ネットワークの問題を処理します。

ツールの依存関係

プラグインの依存関係は、独自のコンテナーのプラグインでパッケージ化されます。

ツールのインストールなし。コンテナー内で実行されている依存関係。

コード分離

ファイルを開くか、入力など、IDE の主な機能をプラグインがブロックできないことを保証します。

プラグインは個別のスレッドで実行されています。依存関係の不一致を回避します。

vs コード拡張の互換性

既存の VS Code Extensions で IDE の機能を拡張します。

ターゲットの複数のプラットフォーム。必要なインストールで、Visual Studio Code Extension を簡単に検出できます。

4.1.2. che-Theia プラグインの概念の詳細

Red Hat CodeReady Workspaces は、ワークスペースの Che-Theia のデフォルト Web IDE を提供します。Eclipse Theia をベースにしています。これは、Red Hat CodeReady Workspaces ワークスペースの性質に基づいて追加された機能があるため、プレーン Eclipse Theia とは若干異なるバージョンです。このバージョンの Eclipse Theia for CodeReady Workspaces は Che-Theia と呼ばれています

Che-Theia プラグインを構築すると、Red Hat CodeReady Workspaces で 提供される IDE を拡張することができます。Che-Theia プラグインは、他の Eclipse Theia ベースの IDE と互換性があります。

4.1.2.1. クライアント側およびサーバー側の Che-Theia プラグイン

Che-Theia エディタープラグインでは、開発ワークフローをサポートするために、言語、デバッガー、およびツールをインストールに追加できます。エディターが読み込みを完了すると、プラグインが実行されます。Che-Theia プラグインが失敗すると、メインの Che-Theia エディターが機能し続けます。

che-Theia プラグインは、クライアント側またはサーバー側で実行します。以下は、クライアントおよびサーバー側のプラグインの概念のスキームです。

図4.2 クライアントおよびサーバー側の Che-Theia プラグイン

同じ Che-Theia プラグイン API は、クライアント側(Web ワーカー)またはサーバー側(Node.js)上で実行されるプラグインに公開されます。

4.1.2.2. che-Theia プラグイン API

Red Hat CodeReady Workspaces でツールの分離と容易な拡張性を提供するために、Che-Theia IDE にはプラグイン API のセットがあります。API は Visual Studio Code extension API と互換性があります。通常、Che-Theia は VS Code 拡張を独自のプラグインとして実行できます。

CodeReady Workspaces ワークスペース(コンテナー、設定、ファクトリー)のコンポーネントに依存するプラグインを開発する場合、Che-Theia に組み込まれた CodeReady Workspaces API を使用します。

4.1.2.3. che-Theia プラグインの機能

che-Theia プラグインには以下の機能があります。

Expand
プラグインdescriptionリポジトリー

CodeReady Workspaces 拡張タスク

CodeReady Workspaces コマンドを処理し、それらをワークスペースの特定コンテナーを起動する機能を提供します。

 

CodeReady Workspaces 拡張ターミナル

ワークスペースのコンテナーにターミナルを提供できます。

 

CodeReady Workspaces Factory

Red Hat CodeReady Workspaces ファクトリーを処理します。

 

CodeReady Workspaces Container

ワークスペース内で実行されているすべてのコンテナーを表示し、コンテナーと対話できるようにするコンテナービューを提供します。

コンテナーのプラグイン

Dashboard

IDE と Dashboard を統合し、ナビゲーションを容易にします。

 

CodeReady Workspaces APIs

IDE API を拡張し、CodeReady Workspaces 固有のコンポーネント(ワークスペース、設定)と対話できるようにします。

 

4.1.2.4. vs コードエクステンションおよび Eclipse Theia プラグイン

Che-Theia プラグインは、VS Code 拡張または Eclipse Theia プラグインに基づいています。

Visual Studio Code 拡張
VS コード拡張を、独自の依存関係セットで Che-Theia プラグインとして再パッケージ化するには、依存関係をコンテナーにパッケージ化します。これにより、Red Hat CodeReady Workspaces ユーザーはエクステンションの使用時に依存関係をインストールする必要がなくなります。CodeReady Workspaces の「 Using a Visual Studio Code extension 」を参照してください。
Eclipse Theia プラグイン
Eclipse Theia プラグインを実装し、Red Hat CodeReady Workspaces にパッケージ化することで、Che-Theia プラグインを構築できます。

4.1.3. che-Theia プラグインのメタデータ

che-Theia プラグインのメタデータは、プラグインレジストリーの個々のプラグインに関する情報です。

Che-Theia プラグインのメタデータは、各プラグインの meta.yaml ファイルで定義されます。

以下は、プラグインメタ YAML ファイルで利用できるすべてのフィールドの概要です。本書では、Plugin meta YAML 構造バージョン 3 を示しています。

che-plugin-registry リポジトリー には以下が含まれます。

Expand
表4.1 meta.yml

apiVersion

バージョン 2 以降(バージョンは後方互換性のためにサポート対象)

category

Available: category は、EditorDebuggerFormatterLanguage、Linter、Snippet、Theme Otherのいずれか 設定する必要があります。

description

プラグインの目的についての簡単な説明

displayName

ユーザーダッシュボードに表示される名前

非推奨

オプション。他のプラグインを非推奨にするセクション

* autoMigrate - boolean

* migrateTo - new org/plugin-id/version(例: redhat/vscode-apache-camel/latest

firstPublicationDate

YAML に存在する必要はありませんが、これはプラグインレジストリーの dockerimage ビルド時に生成されます。

latestUpdateDate

YAML に存在する必要はありませんが、これはプラグインレジストリーの dockerimage ビルド時に生成されます。

icon

SVG または PNG アイコンの URL

name

名前(スペースは許可されていません)[-a-z0-9] と一致する必要があります。

publisher

パブリッシャーの名前。[-a-z0-9] と一致する必要があります。

リポジトリー

プラグインリポジトリーの URL(例: GitHub)

title

プラグインのタイトル(long)

type

Che PluginVS Code 拡張

バージョン

バージョン情報(例: 7.5.1、[-.a-z0-9])

spec

仕様(下記参照)

Expand
表4.2 spec 属性

endpoints

オプション; プラグインエンドポイント。エンドポイントの説明を参照してください。

コンテナー

オプション: プラグインのサイドカーコンテナー。Che Plugin および VS コードエクステンションがサポートするのは 1 つのコンテナーだけです。

initContainers

オプション。プラグイン用のサイドカー init コンテナー

workspaceEnv

オプション; ワークスペースの環境変数

extensions

オプション: .vsix や .theia ファイルなどの、プラグインアーティファクトへの URL 一覧で VS コードおよび Che-Theia プラグインに必要な属性

Expand
表4.3 spec.containers。注記: spec.initContainers には、全く同じコンテナー定義があります。

name

サイドカーコンテナー名

image

絶対または相対的なコンテナーイメージの URL

memoryLimit

OpenShift メモリー制限文字列(例: 512Mi

memoryRequest

OpenShift メモリー要求文字列(例: 512Mi

cpuLimit

OpenShift CPU 制限文字列(例: 2500m

cpuRequest

OpenShift CPU 要求文字列(例: 125m

env

サイドカーコンテナーに設定する環境変数の一覧

command

コンテナーにおける root process コマンドの文字列配列定義

args

コンテナーの root process コマンドの文字列配列引数

ボリューム

プラグインで必要なボリューム

ポート

プラグインによって公開されるポート(コンテナー上)

commands

プラグインコンテナーで利用可能な開発コマンド

mountSources

ソースコード /projects でボリュームをプラグインコンテナーにバインドするブール値フラグ

initContainers

オプション: サイドカープラグインの init コンテナー

ライフサイクル

コンテナーライフサイクルフック。ライフサイクル の説明を参照してください。

Expand
表4.4 spec.containers.env および spec.initContainers.env 属性。注記: workspaceEnv に は全く同じ属性があります。

name

環境変数名

value

環境変数の値

Expand
表4.5 spec.containers.volumes および spec.initContainers.volumes 属性

mountPath

コンテナーのボリュームへのパス

name

ボリューム名

ephemeral

true の場合、ボリュームは一時的なものになります。そうでない場合は、ボリュームは永続化されます。

Expand
表4.6 spec.containers.ports and spec.initContainers.ports attributes

exposedPort

公開ポート

Expand
表4.7 spec.containers.commands and spec.initContainers.commands attributes

name

コマンド名

workingDir

コマンド作業ディレクトリー

command

開発コマンドを定義する文字列配列

Expand
表4.8 spec.endpoints attributes

name

名前(スペースは許可されていません)[-a-z0-9] と一致する必要があります。

public

truefalse

targetPort

ターゲットポート

attributes

エンドポイント属性

Expand
表4.9 spec.endpoints.attributes attributes

protocol

プロトコル(例: ws

type

IDE, ide-dev

discoverable

truefalse

secure

truefalsetrue の場合、エンドポイントは 127.0.0.1 でのみリッスンし、JWT プロキシーを使用して公開されます。

cookiesAuthEnabled

truefalse

Expand
表4.10 spec.containers.lifecycle および spec.initContainers.lifecycle 属性

postStart

コンテナー 起動直後に実行される postStart イベント。postStart ハンドラー および preStop ハンドラーを参照してください。

* EXEC : 特定のコマンドを実行し、コマンドによって消費されるリソースがコンテナーに対してカウントされます。

* command: ["/bin/sh", "-c", "/bin/post-start.sh"]

preStop

コンテナーが終了する前に実行される preStop イベント。postStart ハンドラー および preStop ハンドラーを参照してください。

* EXEC : 特定のコマンドを実行し、コマンドによって消費されるリソースがコンテナーに対してカウントされます。

* command: ["/bin/sh", "-c", "/bin/post-start.sh"]

Che-Theia プラグインの meta.yaml の例: CodeReady Workspaces machine-exec Service

  apiVersion: v2
  publisher: eclipse
  name: che-machine-exec-plugin
  version: 7.9.2
  type: Che Plugin
  displayName: CodeReady Workspaces machine-exec Service
  title: Che machine-exec Service Plugin
  description: CodeReady Workspaces Plug-in with che-machine-exec service to provide creation terminal
    or tasks for Eclipse CHE workspace containers.
  icon: https://www.eclipse.org/che/images/logo-eclipseche.svg
  repository: https://github.com/eclipse/che-machine-exec/
  firstPublicationDate: "2020-03-18"
  category: Other
  spec:
    endpoints:
     -  name: "che-machine-exec"
        public: true
        targetPort: 4444
        attributes:
          protocol: ws
          type: terminal
          discoverable: false
          secure: true
          cookiesAuthEnabled: true
    containers:
     - name: che-machine-exec
       image: "quay.io/eclipse/che-machine-exec:7.9.2"
       ports:
         - exposedPort: 4444
       command: ['/go/bin/che-machine-exec', '--static', '/cloud-shell', '--url', '127.0.0.1:4444']
Copy to Clipboard Toggle word wrap

VisualStudio コードエクステンションの meta.yaml 例: AsciiDoc サポートエクステンション

apiVersion: v2
category: Language
description: This extension provides a live preview, syntax highlighting and snippets for the AsciiDoc format using Asciidoctor flavor
displayName: AsciiDoc support
firstPublicationDate: "2019-12-02"
icon: https://www.eclipse.org/che/images/logo-eclipseche.svg
name: vscode-asciidoctor
publisher: joaompinto
repository: https://github.com/asciidoctor/asciidoctor-vscode
title: AsciiDoctor Plug-in
type: VS Code extension
version: 2.7.7
spec:
  extensions:
  - https://github.com/asciidoctor/asciidoctor-vscode/releases/download/v2.7.7/asciidoctor-vscode-2.7.7.vsix
Copy to Clipboard Toggle word wrap

4.1.4. che-Theia プラグインのライフサイクル

ユーザーがワークスペースを起動すると、以下の手順に従います。

  1. CodeReady Workspaces マスターは、ワークスペース定義から起動するプラグインをチェックします。
  2. プラグインメタデータが取得され、各プラグインのタイプが認識されます。
  3. Broker はプラグインタイプに従って選択されます。
  4. ブローカーはプラグインのインストールおよびデプロイメントを処理します(インストールプロセスはブローカーごとに異なります)。
注記

さまざまな種類のプラグインが存在する。ブローカーは、プラグインが正常にデプロイされるまでのインストール要件をすべて満たします。

図4.3 che-Theia プラグインのライフサイクル

CodeReady Workspaces ワークスペースを起動する前に、CodeReady Workspaces マスターはワークスペースのコンテナーを起動します。

  1. Che-Theia プラグインブローカーは( .theia ファイルから)プラグインを抽出し、プラグインに必要なサイドカーコンテナーを取得します。
  2. ブローカーは適切なコンテナー情報を CodeReady Workspaces マスターに送信します。
  3. ブローカーは Che-Theia プラグインをボリュームにコピーし、Che-Theia エディターコンテナーで使用できるようにします。
  4. 次に、CodeReady Workspaces ワークスペースマスターがワークスペースのすべてのコンテナーを起動します。
  5. che-Theia は独自のコンテナーで起動され、プラグインを読み込むために正しいフォルダーをチェックします。

che-Theia プラグインのライフサイクル:

  1. ユーザーが Che-Theia でブラウザータブまたはウィンドウを開くと、Che-Theia は新しいプラグインセッションを開始します(フロントエンドの場合は Web ワーカー、バックエンドの場合は Node.js)。Che-Theia プラグインごとに、新しいセッションが開始されていることが通知されます(プラグインの start() 関数はトリガーされます)。
  2. Che-Theia プラグインセッションが実行され、Che-Theia バックエンドおよびフロントエンドと対話しています。
  3. ユーザーがブラウザータブを閉じるかタイムアウトがある場合、すべてのプラグインが通知されます(トリガーされたプラグインの stop() 関数)。

4.1.5. Embedded および remote Che-Theia プラグイン

Red Hat CodeReady Workspaces の開発者ワークスペースは、プロジェクトで作業するために必要なすべての依存関係を提供します。アプリケーションには、使用されるすべてのツールおよびプラグインに必要な依存関係が含まれます。

che-Theia プラグインは、必要な依存関係( 組み込み (またはローカル)と リモート )に基づいて、2 つの方法で実行できます。

4.1.5.1. Embedded(またはローカル)プラグイン

プラグインには特定の依存関係がなく、Node.js ランタイムのみを使用し、IDE と同じコンテナーで実行されます。プラグインが IDE に挿入されます。

例:

  • コードの繰り返し
  • 新しいコマンドセット
  • 新規 UI コンポーネント

Che-Theia プラグインを組み込みとして追加するには、meta.yaml ファイルにプラグインバイナリーファイル( .theia アーカイブ) への URL を定義します。VS Code エクステンションの場合は、Visual Studio Code 市場からのエクステンション ID を提供します(CodeReady Workspaces の「 Using a Visual Studio Code extension in CodeReady Workspaces」を参照してください)。

ワークスペースの起動時に、CodeReady Workspaces はプラグインバイナリーをダウンロードして展開し、Che-Theia エディターコンテナーに追加します。Che-Theia エディターは起動時にプラグインを初期化します。

図4.4 ローカル Che-Theia プラグイン

4.1.5.2. リモートプラグイン

プラグインは依存関係に依存するか、バックエンドがあります。これは独自のサイドカーコンテナーで実行され、すべての依存関係がコンテナーにパッケージ化されます。

リモート Che-Theia プラグインは、以下の 2 つの部分で構成されます。

  • che-Theia プラグインまたは VS コード拡張バイナリーmeta.yaml ファイルの定義は、組み込みプラグインと同じです。
  • コンテナーイメージの定義(例: eclipse/che-theia-dev:yely)。このイメージから、CodeReady Workspaces はワークスペース内に別のコンテナーを作成します。

例:

  • Java Language Server
  • Python Language Server

ワークスペースの起動時に、CodeReady Workspaces はプラグインイメージからコンテナーを作成し、プラグインバイナリーをダウンロードおよび展開し、作成したコンテナーに追加します。Che-Theia エディターは起動時にリモートプラグインに接続します。

図4.5 Remote Che-Theia プラグイン

4.1.5.3. 比較マトリックス

Che-Theia プラグイン(または VS コード拡張)にコンテナー内で追加の依存関係が必要ない場合は、埋め込みプラグインになります。プラグインを含む追加の依存関係を持つコンテナーはリモートプラグインです。

Expand
表4.11 che-Theia プラグイン比較マトリックス: Embedded vs remote
 プラグインごとの RAM の設定環境の依存関係分離されたコンテナーを作成する

remote

TRUE

プラグインは、リモートコンテナーに定義された依存関係を使用します。

TRUE

embedded

False(ユーザーはエディターコンテナー全体に対して RAM を設定できますが、プラグインごとに RAM を設定できません)

プラグインはエディターコンテナーから依存関係を使用します。コンテナーにこれらの依存関係が含まれていない場合、プラグインは失敗するか、または予想通りに機能しません。

FALSE

ユースケースとプラグインが提供する機能に応じて、記述された実行モードの 1 つを選択します。

4.1.6. リモートプラグインエンドポイント

Red Hat CodeReady Workspaces には、別個のコンテナーで VS Code Extensions および Che-Theia プラグインを起動するためのリモートプラグインエンドポイントサービスがあります。Red Hat CodeReady Workspaces は、リモートプラグインエンドポイントバイナリーを各リモートプラグインコンテナーに挿入します。このサービスは、プラグイン meta.yaml ファイルで定義されたリモート拡張とプラグインを開始し、Che-Theia エディターコンテナーに接続します。

リモートプラグインエンドポイントは、リモートプラグインコンテナーと Che-Theia エディターコンテナーとの間にプラグイン API プロキシーを作成します。リモートプラグインエンドポイントは、一部のプラグイン API の部分のインターセプターで、エディターコンテナーではなくリモートサイドカーコンテナー内で起動します。例: 端末 API、デバッグ API

リモートプラグインエンドポイント実行可能コマンドは、リモートプラグインコンテナーの環境変数 PLUGIN_REMOTE_ENDPOINT_EXECUTABLE に保存されます

Red Hat CodeReady Workspaces では、サイドカーイメージでリモートプラグインエンドポイントを起動する方法が 2 つあります。

  • Dockerfile を使用した起動リモートプラグインエンドポイントの定義。この方法を使用するには、元のイメージをパッチを適用して再ビルドします。
  • プラグインの meta.yaml ファイルで起動リモートプラグインエンドポイントを定義する。この方法を使用して、元のイメージのパッチ適用を回避します。

4.1.6.1. Dockerfile を使用した起動リモートプラグインエンドポイントの定義

リモートプラグインエンドポイントを起動するには、Dockerfile で PLUGIN_REMOTE_ENDPOINT_EXECUTABLE 環境 変数を使用します。

手順

  • Dockerfile の CMD コマンドを使用して、リモートプラグインエンドポイントを起動します。

    Dockerfile の例

    FROM fedora:30
    
    RUN dnf update -y && dnf install -y nodejs htop && node -v
    
    RUN mkdir /home/user
    
    ENV HOME=/home/user
    
    RUN mkdir /projects \
        && chmod -R g+rwX /projects \
        && chmod -R g+rwX "${HOME}"
    
    CMD ${PLUGIN_REMOTE_ENDPOINT_EXECUTABLE}
    Copy to Clipboard Toggle word wrap

  • Dockerfile の ENTRYPOINT コマンドを使用して、リモートプラグインエンドポイントを起動します。

    Dockerfile の例

    FROM fedora:30
    
    RUN dnf update -y && dnf install -y nodejs htop && node -v
    
    RUN mkdir /home/user
    
    ENV HOME=/home/user
    
    RUN mkdir /projects \
        && chmod -R g+rwX /projects \
        && chmod -R g+rwX "${HOME}"
    
    ENTRYPOINT ${PLUGIN_REMOTE_ENDPOINT_EXECUTABLE}
    Copy to Clipboard Toggle word wrap

4.1.6.1.1. ラッパースクリプトの使用

イメージによっては、ラッパースクリプトを使用してパーミッションを設定します。スクリプトは、コンテナー内のパーミッションを設定する Dockerfile の ENTRYPOINT コマンドで定義され、Dockerfile の CMD コマンドで定義されたメインプロセスを実行します。

Red Hat CodeReady Workspaces は、このようなイメージをラッパースクリプトで使用し、OpenShift などの高度なセキュリティーで異なるインフラストラクチャーでパーミッション設定を提供します。

  • ラッパースクリプトの例:

    #!/bin/sh
    
    set -e
    
    export USER_ID=$(id -u)
    export GROUP_ID=$(id -g)
    
    if ! whoami >/dev/null 2>&1; then
        echo "${USER_NAME:-user}:x:${USER_ID}:0:${USER_NAME:-user} user:${HOME}:/bin/sh" >> /etc/passwd
    fi
    
    # Grant access to projects volume in case of non root user with sudo rights
    if [ "${USER_ID}" -ne 0 ] && command -v sudo >/dev/null 2>&1 && sudo -n true > /dev/null 2>&1; then
        sudo chown "${USER_ID}:${GROUP_ID}" /projects
    fi
    
    exec "$@"
    Copy to Clipboard Toggle word wrap
  • ラッパースクリプトを含む Dockerfile の例:

    Dockerfile の例

    FROM alpine:3.10.2
    
    ENV HOME=/home/theia
    
    RUN mkdir /projects ${HOME} && \
        # Change permissions to let any arbitrary user
        for f in "${HOME}" "/etc/passwd" "/projects"; do \
          echo "Changing permissions on ${f}" && chgrp -R 0 ${f} && \
          chmod -R g+rwX ${f}; \
        done
    
    ADD entrypoint.sh /entrypoint.sh
    
    ENTRYPOINT [ "/entrypoint.sh" ]
    CMD ${PLUGIN_REMOTE_ENDPOINT_EXECUTABLE}
    Copy to Clipboard Toggle word wrap

    この例では、コンテナーは Dockerfile の ENTRYPOINT コマンドで定義された /entrypoint.sh スクリプトを起動します。スクリプトはパーミッションを設定し、exec $@ を使用してコマンドを実行します。CMDENTRYPOINT の引数で、exec $@ コマンドは ${PLUGIN_REMOTE_ENDPOINT_EXECUTABLE} を実行し ます。リモートプラグインエンドポイントは、パーミッション設定後にコンテナーで起動します。

4.1.6.2. meta.yaml ファイルで起動しているリモートプラグインエンドポイントの定義

この方法を使用して、イメージを再利用して、変更せずにリモートプラグインエンドポイントを起動します。

手順

プラグイン meta.yaml ファイルプロパティーコマンド および args を変更します。

  • Command - Red Hat CodeReady Workspaces を使用して Dockerfile#ENTRYPOINT を上書きします。
  • args: Red Hat CodeReady Workspaces は Dockerfile#CMD を上書きするために使用されます。
  • コマンド および args プロパティーが変更された YAML ファイルの例:

    apiVersion: v2
    category: Language
    description: "Typescript language features"
    displayName: Typescript
    firstPublicationDate: "2019-10-28"
    icon: "https://www.eclipse.org/che/images/logo-eclipseche.svg"
    name: typescript
    publisher: che-incubator
    repository: "https://github.com/Microsoft/vscode"
    title: "Typescript language features"
    type: "VS Code extension"
    version: remote-bin-with-override-entrypoint
    spec:
      containers:
        - image: "example/fedora-for-ts-remote-plugin-without-endpoint:latest"
          memoryLimit: 512Mi
          name: vscode-typescript
          command:
            - sh
            - -c
          args:
            - ${PLUGIN_REMOTE_ENDPOINT_EXECUTABLE}
      extensions:
        - "https://github.com/che-incubator/ms-code.typescript/releases/download/v1.35.1/che-typescript-language-1.35.1.vsix"
    Copy to Clipboard Toggle word wrap
  • コマンド の代わりに args を変更し、ラッパースクリプトパターンでイメージを使用し、entrypoint.sh スクリプトの呼び出しを維持します。

    apiVersion: v2
    category: Language
    description: "Typescript language features"
    displayName: Typescript
    firstPublicationDate: "2019-10-28"
    icon: "https://www.eclipse.org/che/images/logo-eclipseche.svg"
    name: typescript
    publisher: che-incubator
    repository: "https://github.com/Microsoft/vscode"
    title: "Typescript language features"
    type: "VS Code extension"
    version: remote-bin-with-override-entrypoint
    spec:
      containers:
        - image: "example/fedora-for-ts-remote-plugin-without-endpoint:latest"
          memoryLimit: 512Mi
          name: vscode-typescript
          args:
            - sh
            - -c
            - ${PLUGIN_REMOTE_ENDPOINT_EXECUTABLE}
      extensions:
        - "https://github.com/che-incubator/ms-code.typescript/releases/download/v1.35.1/che-typescript-language-1.35.1.vsix"
    Copy to Clipboard Toggle word wrap

    Red Hat CodeReady Workspaces は、Dockerfile の ENTRYPOINT コマンドで定義された entrypoint.sh ラッパースクリプトを呼び出します。スクリプトは、exec "$@" コマンドを使用して [ 'sh', '-c", ' ${PLUGIN_REMOTE_ENDPOINT_EXECUTABLE}' ] を実行します。

注記

コンテナーの起動時にサービスを実行し、リモートプラグインエンドポイントも起動するには、変更した コマンド および args プロパティーで meta.yaml を使用します。サービスを起動し、プロセスをデタッチし、リモートプラグインエンドポイントを開始し、それらのエンドポイントが並行して機能します。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat