DockerでMySQLを起動して、Intelij IDEAで接続する方法 

DockerでMySQLを起動して、Intelij IDEAにdockerプラグインを導入して接続する方法を紹介します。画像多めです。
##作業環境
OS：Windows 10
エディション：HOME
バージョン：2004
##事前準備
###①Windowsを最新版にアップデートする
下記のサイトを参考に、Windows 10 HOMEの場合は必ず最新版までアップデートしておきます。
https://www.atmarkit.co.jp/ait/articles/1701/07/news037.html
最新版になるまで、何回もやる可能性があります。下のような画面になれば、OKです。
![202005191040.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/7f51d99c-7214-e03d-a630-6581f5bf1184.png)
###②IntelliJ IDEAのインストールする
以下のサイトを参考にIntelliJ IDEAの **Community Edition** をインストールし、日本語化します。
https://sukkiri.jp/technologies/ides/intellij-idea/intellij-idea-win.html
※Editionが２つあるので、注意してください。
![202005241417.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/2a7b934e-8214-df20-cd30-759aa17753dd.png)
###③Dockerをインストールする
以下のサイトを参考に、Dockerをインストールします。
https://techracho.bpsinc.jp/ebi/2020_03_27/90477


Windows 10 HOMEの場合は、インストール方法が特殊なので、下記のサイトを参考にインストールしてください。
https://tech.guitarrapc.com/entry/2020/04/21/034236
###④Dockerの設定
Dockerのインストールが終わったら、起動して、上の歯車のアイコンを押して、設定を開きます。
![202005191315.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/4057d8e8-a5cb-5e4e-39a5-8155d0d80a92.png)
「General」の中にある「Expose daemon on …」をオンにし、下にある「Apply & Restart」を押します。
※Dockerの画面が出ない場合は、ここからアクセスします。
![202005190946.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/33320a14-3e7d-4c65-c5ec-cf55b3d052c4.png)
##サンプルソースをダウンロードする
今回は下記のサイトから、サンプルコードをダウンロードします。
https://github.com/miyabayt/spring-boot-doma2-sample
下の画像にように、「Clone or download」という緑のボタンを押すと、下のような画面が出てくるので、「Download ZIP」を押してダウンロードします。
![202005191300.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/39311922-f8ba-c83d-9ce3-fb16806548b6.png)
ZIPファイルをダウンロードして、デスクトップなどに解凍してから、Cドライブ直下に移動してください。
![202005200019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/86435bb1-2981-f043-33c1-f946a95e2109.png)
私の環境下では、Cドライブ直下に解凍すると、下記のように解凍されました。元のフォルダの構成がとは異なるので、エラーの原因になります。上記の画像と同じ構成になるように解凍してください。
![202005192249.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/e0859b14-1a2c-49d7-7168-fbdd2f35c01e.png)
##IntelliJ IDEAにプラグインを導入する
事前準備が完了したら、IntelliJ IDEAに4つプラグインを導入します。
###①Lombok pluginをインストールする
「構成」→「プラグイン」を押します。
![202005191058.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/8435f71a-45e9-306f-e48b-a35ef37efea3.png)
下記のような、プラグインを追加する画面に変わります。
![202005191100.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/70f69554-46eb-cd76-3a6a-7c6af108b414.png)
赤枠で囲ったところに「Lombok」と入力すると プラグインが表示されるので、インストールボタンを押して、インストールします。
![202005191103.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/66eeeb58-0c4d-ff0c-c264-3d161e138be1.png)
###②Eclipse Code Formatterをインストールする
次に「Eclipse Code Formatter」と入力すると プラグインが表示されるので、インストールボタンを押して、インストールします。
![202005191218.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/fec62ab3-d1a5-96af-b089-53eb5174c473.png)
###③Dockerをインストールする
次に「Docker」と入力すると プラグインが表示されるので、インストールボタンを押して、インストールします。
![202005191223.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/e9d84085-1ed8-6e96-64ef-f3b8873acecd.png)
###④Python Community Editionをインストールする
次に「Python Community Edition」と入力すると プラグインが表示されるので、インストールボタンを押して、インストールします。
![202005191226.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/514c8159-8a47-9f9e-4f4f-cca84cfa6ebe.png)
※このプラグインはIntelliJ IDEAからおすすめされて入れたので、不要の可能性もあります。
プラグインのインストールが終わったら、OKを押すと前の画面に戻ります。
##導入したプラグインを設定する
次にプラグインの設定をしていきます。
「構成」→「設定」を押し、設定の画面を開きます。
![202005191056.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/341d2dcb-782c-2db4-cded-9daee46f902f.png)
###①Lombok pluginの設定
左側の「ビルド、実行、デプロイ」を押し、「コンパイラー」を開き、その中の「注釈プロセッサー」を押します。
![202005191016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/5234af51-2b8d-34ab-3ab9-76e770f83a65.png)
右側の画面が変わるので、「注釈処理を使用可能にする」にチェックを入れ、上の画面のようになればOKです。
###②Eclipse Code Formatterの設定
左側の「その他の設定」→「Eclipse Code Formatter」を押します。
![202005191020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/e7cc9135-569e-2182-6300-7a96a0f0d956.png)
右側の画面が変わるので、「Use the Eclipse code formatter」にチェックを入れ、「Eclipse Java Formatter config file」の右の「参照」を押すと、ファイル選択の画面が出てきます。
![202005191021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/37c3c750-1222-148e-225a-30d5907fe487.png)
先程解凍した「spring-boot-doma2-sample-master」というフォルダを開き、その中の「eclipse-formatter.xml」を選びます。

eclipse-formatter.xmlまでのパスは、Cドライブ直下に「spring-boot-doma2-sample-master」がある場合は、下記の通りになります。
C:\spring-boot-doma2-sample-master\eclipse-formatter.xml
###③Dockerの設定
左側の「ビルド、実行、デプロイ」を押し、「Docker」を押します。
![202005191014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/e86175a8-fb7e-8ca9-77a4-985ec6aa51ef.png)
「TCPソケット」を選び、接続が完了すればOKです。
接続できない場合は、まずはDockerが起動しているかどうか確認してください。

以上でプラグインの設定は終了です。


##IntelliJ IDEAの設定を変更する
プラグインの設定が完了したら、IntelliJ IDEAの設定を変更していきます。
###①bootRunを実行している場合でもビルドされるようにする
Intellij上で「Ctrl+Shift+A」を押すと、小さい画面が出てくるので、「レジストリー」と入力します。
![202005191328.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/d4dce365-4d03-994b-618f-c35d4032b7f9.png)
すると下に「レジストリー」と出てくるので、ここを選びます。
![202005191331.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/f1a281fb-d0a9-dc58-eaa8-5d9016cc031c.png)
「compiler.automake.allow.when.app.running」という項目探して、右側のチェックボックスにチェックを入れます。終わったら、「閉じる」を押します。
###②コンソール出力の文字化けを防ぐ
Windowsの場合は、コンソール出力が文字化けするため、C:¥Program Files¥JetBrains¥IntelliJ Idea xx.x.x¥binの中にある「idea64.exe.vmoptions」というファイルを開きます。
![202005191338.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/107276c7-20c2-e701-29cb-60f931e46c2a.png)
一番下の行に「-Dfile.encoding=UTF-8」を追記して保存します。
![202005191339.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/d28b5a74-e0ca-c5be-17e5-3064a9a3979a.png)
###③Java11を設定する
「構成」→「プロジェクト構造」を選びます。
![202005191345.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/564b823a-6ac5-e9bc-a8f8-99700e6ca838.png)
設定が開くので、「プロジェクト設定」→「プロジェクト」を開き、「プロジェクトSDK」と「プロジェクト言語レベル」をそれぞれ、「11」を選びます。
![202005191352.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/35151c74-31d9-f13a-76b8-54e84cad7b08.png)
もし、「プロジェクトSDK」で「11java version “11.0.7”」といった項目が出ない場合は、以下のページより「Java SE 11 (LTS)」の「JDK Download」からダウンロードして、インストールしてください。
https://www.oracle.com/java/technologies/javase-downloads.html

※詳しいインストール手順が必要な場合はこちらを参考にしてみてください。
https://sukkiri.jp/technologies/processors/jdk/jdk-win_install.html
##DockerでMySQLを起動する
###初回起動の場合
初回起動の場合は、以下の手順でMySQLを起動します。
![202005191610.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/edef741b-ebe4-e343-349d-502732e9c5bf.png)
###①docker-compose.ymlが存在するフォルダを確認する
サンプルコードの中には、DockerでMySQLを起動するための設定ファイル「docker-compose.yml」が含まれています。
![202005200106.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/46fbf773-aa29-3db9-865e-5bb52f551783.png)
Cドライブ直下に「spring-boot-doma2-sample-master」がある場合は、「C:\spring-boot-doma2-sample-master\docker」にあります。
###②Windows Power Shell を管理者権限で起動する
Dockerにコンテナなどを追加するので、タスクバーのwindowsマークの上で右クリックして、Windows Power Shell を管理者権限で起動します。
![202005200041.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/cb9d5978-07a4-d894-5587-b08b302000fd.png)
##③Windows Power ShellからDockerのMySQLを起動する
急にWindows Power Shellが出てきて、難しそうですが、入力するのは以下の2行だけです。

```
cd C:\spring-boot-doma2-sample-master\docker
docker-compose up
```

先程の「docker-compose.yml」というファイルが存在するフォルダまで移動します。Cドライブ直下に「spring-boot-doma2-sample-master」がある場合は、以下のようになります。

```
cd C:\spring-boot-doma2-sample-master\docker
```

“docker-compose”というコマンドが使えるかどうかを確かめるために、以下のように入力します。

```
docker-compose --version
```

以下のようにバージョンが表示されればOKです。

```
docker-compose version 1.25.5, build 8a1c60f6
```

次に以下のように入力して、MySQLを起動します

```
docker-compose up
```

エラーが出てうまく行かない場合は、docker-compose.ymlが存在するフォルダまで移動してから、上記のコードを実行しているかどうか、確認してください。
このコマンドが終了すると、Dockerの画面が下記のように変わります。
![202005190953.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/2576a7ed-0654-5935-6b7c-4cb6d4805174.png)
簡単にDockerでMySQLを起動することができますね。
###2回目以降
Dockerを起動します。Dockerの画面が出ない場合は、ここからアクセスします。
![202005190946.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/33320a14-3e7d-4c65-c5ec-cf55b3d052c4.png)
白いクジラのアイコンの上で右クリックをして、「Dashboard」を選びます。
![202005190948.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/2794afed-61fe-ca0c-2c25-c575af5848fd.png)
Dockerの画面が出てきたら、赤枠で囲った▶部分を押します。
![202005190949.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/51584052-4f53-6411-3bd3-6ca3ec020ddf.png)
MySQLが出てくるので、赤枠で囲ったボタンを押すと、サーバーの起動が始まります。
![202005190952.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/ab5b90e0-df03-c528-dcb6-969d3aae1d4e.png)
下の画面が出てくればOKです。
![202005190953.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/2576a7ed-0654-5935-6b7c-4cb6d4805174.png)
##Dockerで起動したMySQLに、Intelij IDEAを接続する
Intelij IDEAを起動して、「オープンまたはインポート」を選びます。
![202005191417.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/5f455808-f6a4-19f8-71ef-c5ad1425e47f.png)
Cドライブ直下に解凍した「spring-boot-doma2-sample-master」を選び、OKを押します。
![202005191420.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/d11d5212-5d61-2fbb-3c70-4c656f1aacc9.png)
下のような画面が出てくるので、「サービス」を選びます。
![202005190959.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/8384747b-fc10-78fe-0d62-79715ec1cad2.png)
画面が変わると「Docker」が出てくるので、選ぶと接続が始まります。![202005191000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/03f5799c-79c2-aafe-001e-645b40009abe.png)
接続が完了すると、以下のような画面になります。
![202005191001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/4382b9c5-3962-11c3-9ab3-cc052e9222ac.png)
以上で、Dockerで起動したMySQLに、Intelij IDEAで接続することができました。
##サンプルコードを動かす
ここからは、サンプルコードを動かしていきます。
サンプルコードを動かす前に、プラグインの設定とJavaの設定を確認してください。
確認が終了したら、Intelij IDEAの「ターミナル」を開きます。
![202005191002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/ed5f4a5d-4251-986e-b21f-61a8ac117a89.png)

###①バージョン確認
ターミナルが起動したら、以下のように入力します。

```
cd C:\spring-boot-doma2-sample-master
```

次に、以下のようにコードを入力します。

```
gradle -v
```

以下のように、バージョンが表示されます。

```
------------------------------------------------------------
Gradle 6.3
------------------------------------------------------------

Build time:   2020-03-24 19:52:07 UTC
Revision:     bacd40b727b0130eeac8855ae3f9fd9a0b207c60

Kotlin:       1.3.70
Groovy:       2.5.10
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          11.0.7 (Oracle Corporation 11.0.7+8-LTS)
OS:           Windows 10 10.0 amd64
```

###②サンプルコードを動かす
次にサンプルコードを動かします。以下のように入力します。

```
gradlew composeUp
```

プログラムが終わったら、以下のように入力します。

```
gradlew :sample-web-admin:bootRun
```

しばらく待つと、95％で止まりますが、そのままでOKです。
![202005191007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/b6bdbc1b-ee89-7090-59bf-29bb9afa8608.png)
これでアプリが起動したので、[http://localhost:18081/admin](http://localhost:18081/admin )にアクセスします。
![screencapture-localhost-18081-admin-login-2020-05-19-10_09_21 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/4920d66d-6b58-24f3-f219-957b64187e9f.png)
上のような画面が出てきたら、成功です。お疲れさまでした。

この記事は先輩エンジニアからアドバイスを受け、[個人ブログ](https://neneta.net/intelij-idea-with-docker-mysql/)から移植しました。おかしいところなどありましたら、ご指摘いただけると幸いです。