最近、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 のインスタンスです。
データベースへのアクセスも問題ありません。