日本語入力(PRJ-330)に対応したJetbrains ProjectorのDockerイメージの作成方法


はじめに

JetbrainsのProjectorが2021年5月20日に日本語入力に対応したようです。

この記事では、最新のprojector-clientを含んだProjectorのDockerイメージの作成方法を示します。

追記2

  • 7月6日に入力方式のデフォルトがLEGACYからIMEに戻った
  • Macの入力も修正されているようなので・・・日本語入力は改善されているかもしれません。(未検証

追記

projector-servergradle.propertiesprojectorClientVersion=d70818f70620d90に変更することでprojector-clientの用意は必要ありません。

この0620d90projector-clientのコミットIDです。

なので、試すだけであれば以下の流れで簡単にできます。

$ git clone https://github.com/JetBrains/projector-docker.git
$ git clone https://github.com/JetBrains/projector-server.git
$ vim projector-server/gradle.properties # projectorClientVersion=d70818f7 → projectorClientVersion=0620d90
# 必要であればprojector-serverを修正してフォントを追加したり・・・
$ cd projector-docker
$ ./build-container.sh projector-webstorm:2021.1.1 https://download.jetbrains.com/webstorm/WebStorm-2021.1.1.tar.gz
$ docker run -it --rm -p 8887:8887 projector-webstorm:2021.1.1
# ブラウザから http://{起動させたホストIP}:8887/ にアクセス ※ FireFoxだとキー入力が出来ない・・・?

使用した環境

OS: ubuntu 20.04

手順

概要

  • ProjectorのDockerイメージを作成するために必要なGitをクローン

  • projector-dockerを使用してビルドするための修正
  • Projector-serverを必要に応じて改造
  • projector-dockerでビルド

ProjectorのDockerイメージを作成するために必要なGitをクローン

projector-dockerを使用して任意のprojector-serverprojector-clientを含んでDockerイメージを作成するためには、それぞれを同じディレクトリにクローンしておく必要があります。

$ git clone https://github.com/JetBrains/projector-server.git
$ git clone https://github.com/JetBrains/projector-client.git
$ git clone https://github.com/JetBrains/projector-docker.git

projector-dockerを使用してビルドするための修正

projector-dockerを使用してDockerイメージを作成する際にはprojector-serverの設定の変更と、projector-dockerがビルド時に任意のprojector-clientを使えるようにDockerfileの修正が必要です。

projector-serverの設定変更

projector-serverのREADMEにこう書いてあります。

By default, a proper revision of projector-client:projector-common at GitHub will be used as a dependency. If you want to use local projector-client, please specify a special local property. You can find an example in local.properties.example file.

とりあえず、local.properties.exampleにはローカルのprojector-clientを使用するための設定であるuseLocalProjectorClient=trueが宣言されているので、local.properties.exampleをそのままコピーして使います。

$ cp projector-server/local.properties.example projector-server/local.properties

projector-dockerのDockerfileの修正

projector-dockerDockerfileにはprojector-clientが含まれていないため、このままだとビルドできません。

なので、projector-clientが含まれるようにDockerfileを修正します。

$ git diff Dockerfile
diff --git a/Dockerfile b/Dockerfile
index 3569637..0cdaade 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -31,6 +31,7 @@ ENV PROJECTOR_DIR /projector

 # projector-server:
 ADD projector-server $PROJECTOR_DIR/projector-server
+ADD projector-client $PROJECTOR_DIR/projector-client
 WORKDIR $PROJECTOR_DIR/projector-server
 ARG buildGradle
 RUN if [ "$buildGradle" = "true" ]; then ./gradlew clean; else echo "Skipping gradle build"; fi

projector-serverを必要に応じて改造

ProjectorのデフォルトフォントはNotoフォントになったので日本語の表示は問題ありません。

もし任意のフォントを入れたい場合は以下の記事を参考にして修正してみてください。

projector-dockerでビルド

projector-dockerbuild-container.shを使用してDockerイメージをビルドします。

build-container.sh [containerName [ideDownloadUrl]]

Compiles Projector inside Docker and builds a Docker container locally.

build-container.shは引数なしだとIntelliJ IDEA Communityで作成されます。

今回は自分がよく使うWebStorm2021.1.1にしておきます。

それぞれのIDEのバージョンおよびファイルのURLは公式のダウンロードページ等を参照してください。

$ cd projector-docker
$ ./build-container.sh projector-webstorm:2021.1.1 https://download.jetbrains.com/webstorm/WebStorm-2021.1.1.tar.gz

動作確認

出来上がったDockerイメージを起動してみます。

docker run -it --rm -p 8887:8887 projector-webstorm:2021.1.1

ブラウザからアクセスします。
※ FireFoxだと入力が伝わらなかったのでChromium版Edgeで試しています

http://{起動させたホストIP}:8887/

日本語を打ち込めることが確認できました。

最後に

あとはIMEサポートが組み込まれたバージョンの正式リリースを待ちましょう。

ついでにサーバー上で運用する方法を考えればどこからでも使える自分だけの開発環境の完成です。

Dockerイメージをベースにいろいろパッケージを追加したDockerイメージを作って・・・Kubernetes上で・・・IngressにSSLを適用して・・・Ingressに認証を付け加えて・・・いける気がする!

↓ やりました

  • SSLはすでに使っていたので省略
  • 以下を参考にIngressにOAUTH2を導入し、アクセス範囲を所持するドメインの範囲のメアドに限定

  • ホストの特定のディレクトリをhomeディレクトリとして使用するように設定
  • projector-dockerDockerfileを編集してvim, wget, curl, jqをインストールするようにした
  • GoはIDEで入れればいい -> ~/go に入る
    • GoLandのAdd SDKではなんかエラーして入らなかった
      • Go言語の公式からtar.gzをダウンロードしてきて~/go/go{version}に配置して利用
  • Nodeはnodebrewで入れればいい -> ~/.nodebrew に入る

以上です。