最近、spring cloud を学んでいて、eureka について学んだところ、idea は WSL へのインスタンスのコピーをサポートしていることに気付きましたので、自分で試してみました。
WSL の設定#
WSL が何かわからない場合、またはまだ WSL をインストールしていない場合は、自分で調べてください。
以下の内容は Ubuntu20 を基準にしています。他のバージョンは適宜コマンドを置き換えてください。
JDK のインストール#
JDK がないと、WSL 環境で spring boot や cloud プロジェクトを実行することはできませんので、JDK のインストールが最初のステップです。
Ubuntu での JDK のインストールは、Windows に比べて簡単で、環境変数の設定は必要ありません。1 行のコマンドでインストールできます。
apt install openjdk-8-jre-headless #openjdk 8をインストール
インストールが完了したら、次のコマンドを使用してバージョンを確認します。
java -version #バージョンを確認
JDK のパスの設定#
インストールが完了したら、idea で WSL の JDK パスを設定する必要があります。
デフォルトの設定は以下の通りです。
/usr/lib/jvm/java-8-openjdk-amd64
コピーしたインスタンスの設定#
ローカルの Windows で実行されているインスタンスを選択し、右クリックして「copy configuration」を選択すると、そのインスタンスをコピーすることができます。
次に、コピーしたインスタンスの設定情報を変更する必要があります。ポートなどを変更しない場合、ポートの競合が発生します。
設定情報は、application.properties 形式で記述することをおすすめします。
VM options でポートを設定するには、ショートカットキーAlt
+ V
を使用します。
-Dserver.port=8082 #元のポートを8082に上書き
Program arguments で eureka とデータベースの情報を設定するには、ショートカットキーAlt
+ R
を使用します。
#192.168.0.192をローカルのWindowsのIPアドレスに変更し、10086をeurekaの設定ポートに変更
--eureka.client.service-url.defaultZone=http://192.168.0.192:10086/eureka
#データベースの設定を変更
--spring.datasource.url=jdbc:mysql://192.168.0.192:3306/cloud_user?useSSL=false
--spring.datasource.username=root
--spring.datasource.password=root
--spring.datasource.driver-class-name=com.mysql.jdbc.Driver
注意事項#
Windows の MySQL データベースにアクセスできるかどうかをテストしたい場合は、MySQL をインストールすることができます。
apt-get install mysql-server
その後、MySQL のリモートアクセスをテストします。
mysql -h 192.168.0.192 -uroot -p
タイムアウトが発生する場合は、Windows の 3306 ポートを開放する必要があります。
Windows のファイアウォールを開き、インバウンドルールで新しいルールを選択します。
ポートを選択します。
デフォルトの MySQL ポート 3306 を入力します。
次へをクリックし、デフォルトの設定で次へをクリックします。
結論#
eureka が 2 つの userservice インスタンスを検出していることがわかります。1 つは Windows のインスタンスで、もう 1 つは WSL のインスタンスです。
データベースへのアクセスも問題ありません。