0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerでsshdを動かしてIntelliJのリモート開発を使ってみる

Posted at

概要

最近の開発ではローカル環境にDockerで複数サーバーを立てることもよくあると思います。
しかしWindows環境ではWindowsファイルシステム上に配置したファイルの変更をコンテナ側にいい感じに反映させることができません。
いい感じに反映させるにはLinuxファイルシステム上にファイルを配置する必要があります。
参考

以前投稿した こちらの記事 ではWSL側にIntelliJをインストールしXWindowSystemを使って利用する方法を試しました。

今回は最近?使えるようになったIntelliJのリモート開発機能を使って同じ目的を達成しようと思います。

前提

ホストOS:Windows 11 Pro(21H2)
Docker Desktop:4.7.1
2022年5月時点での情報です。

サンプルなどはセキュリティ面の考慮が漏れている可能性があるので使用する場合には自己責任でお願いします。

方法

IntelliJのリモート開発機能で一番簡単そうなSSHで接続する機能を使います。
(むしろ他の機能は何なのかよくわかってない)
sshdを起動させるためのDockerイメージを作ってローカルで立ち上げます。

wsl上でsshdを動かす方法もあると思いますがsystemdを起動できるようにしたりいろいろと面倒くさそうなので諦めました。

Dockerイメージのサンプル

まずサンプルのリポジトリはこちらです。
ビルドしたイメージは公開してあるのでよろしければどうぞ。

docker pull skta3569/ubuntu22.04-sshd:latest

イメージの機能を箇条書きするとこのような感じです。

  • 起動時にsshdを立ち上げる
    • ユーザー名:remote
    • ホームディレクトリ:/remote
    • 鍵認証でログインする想定
  • コンテナ上の「/host_keys」ディレクトリに配置されたファイルを「/remote/.ssh」にコピーする
    • キーが入っているディレクトリを「/host_keys」にマウントして使う想定
    • ホスト→コンテナのssh接続用(authorized_keys)
    • コンテナ→gitの認証用(id_* をコピーする)
  • 日本語化済み&gitインストール済み

手順

①鍵を作る

ssh-keygen -t ed25519 -c ''

②コンテナを起動する

2つのディレクトリにマウントします。
「/remote」はホームディレクトリでIDEの各種ファイルが保存されるため、任意の名前のボリュームをマウントします。
「/host_keys」は認証用の鍵ファイルをコンテナに連携するためのディレクトリです。

docker run --rm -d -v home:/remote -v *①で作成した鍵を置いたフォルダ*:/host_keys -p 22:22/tcp ubuntu22.04-sshd:latest

③リモート開発機能でアクセスする

「New Connection」を押す
image.png

歯車マークで新しいSSH接続の設定を作成
image.png

ユーザー名は「remote」
鍵認証方式を使います
image.png

SSHの設定ができたら次へ
image.png

「IDE version」は使用するIDEの種類を選びます(IntelliJ以外も選べる)
「Project directory」を選ぶ前に「open an SSH terminal」を押します。
現状のリモート開発機能だとIDEからプロジェクトの新規作成が行えないためターミナルを使ってプロジェクトディレクトリを準備する必要があります。
必要に応じてgitからチェックアウトするなり、ディレクトリの作成なりを行ってください。
プロジェクトディレクトリの選択が終わったら「Download and Start IDE」をクリック
image.png

あとは必要なファイルのダウンロードが終わったらIDEの画面が開きます。
Java系のプロジェクトであれば「Project Structure」からSDKの設定が必要です。
image.png

おわり

以上でIntelliJのリモート開発機能を動かすところまでは完了です。
少し触ってみた感じUI面の機能が少し動かなかったりしますが、なかなかいい感じだと思います。

あとは「②コンテナを起動する」で指定したボリュームを他のコンテナと共有すれば、別コンテナで立ち上げたサーバーでもホットリロードがいい感じに動きます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?