IntelliJ に Docker Integration プラグインをいれてみた


## 説明
IntelliJ から 直接 Docker を扱えるのかなとマニュアルを見ていると、やっぱりあありますね、さすがは IDEA です。

- https://www.jetbrains.com/help/idea/docker.html

**Docker Integration Plugin** をIntelliJ にインストールして利用するようです。ということで、いれてみる事にしました。

## 前提
私が確認している環境は以下の Windows マシンです。後ほど Macでも試してみようと思います。

![image](https://qiita-image-store.s3.amazonaws.com/0/127983/07e0388d-4879-9b44-33d3-4d72631bf81f.png)
- Windows 10 Anniversary Update
    - Windows 10 バージョン 1607

![image](https://qiita-image-store.s3.amazonaws.com/0/127983/3279c421-3aee-ac8f-42c4-19d8c2b711fb.png)
- Docker for Windows Version 17.09.0-ce-win33 (13620)

## 手順
### 1. インストール
#### 1.1. プラグイン・インストール画面
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/a2ce68c6-9cf8-d4e1-448d-668c1ecfcea4.png)

IntellJ のメニューから「File」-「Settings」-「Plugins」を選択します。

#### 1.2. Docker Integration プラグイン の検索＆インストール
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/2a09a98c-f3e8-e7f7-204a-3bcbe048b028.png)

Docker Integration プラグインを検索できたら、インストールボタンをクリックしてインストールします。

#### 1.3. IntelliJ の再起動
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/9f2d90fb-6e2b-8b85-2824-712d03432f40.png)

IntelliJ を再起動します。

### 2. 設定
#### 2.1. Expose Daemon on TCP without TLS
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/63d4e40b-e898-ebf6-7e85-cad57920d8e2.png)

Docker daemon と TCP 接続する設定でデフォルトだと TLS となっているので、Docker の設定画面から TLC なしに変更します。

#### 2.2. IntelliJ の Docker 設定確認
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/e827913e-e167-ff68-d6f8-e78c7c81dd33.png)

IntelliJ の設定画面で Build, Execution, Deployment の下に、**Docker** が追加されている事が確認できます。Docker を選択します。

#### 2.3. Docker 構成の追加
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/ca0d094f-a8a6-3c7b-ebcb-b119f1c9cf98.png)

Docker の構成はそのままにします。

|選択肢|値|
|------|--|
|Connect to Docker daemon with|**TCP socket**|
|Engine API URL|**tcp://localhost:2375**|
|Certificates folder|空欄|

#### 2.4. Docker ホストへの接続
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/8d119441-c780-fd10-dda8-dfe9c36ae5e1.png)

IntelliJ の Docker ビューから Connect を選択します。

![image](https://qiita-image-store.s3.amazonaws.com/0/127983/e08309d7-dad7-3cea-7a88-02991509ac3d.png)

接続が成功すると、Docker が管理しているイメージ一覧が表示されます。

### 3. レジストリへの接続設定
#### 3.1. レジストリの追加
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/5bfbf41d-587d-1bc0-8051-b87b21dc835c.png)

IntelliJ の設定メニューから、Docker 配下の Registry を選択して、構成を追加します。

#### 3.2. レジストリ情報の設定
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/cc365939-de07-aa0c-dd41-7613e1156dcb.png)

接続する Docker レジストリの情報を入力します。
デフォルトでは、**Docker Hub** と**quai.io** のアドレスが選択できます。

### 4. Docker イメージの Pull
#### 4.1. Pull する Docker イメージ
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/ec428ee6-0d6f-55b6-8cca-9cd53f0adb61.png)

Docker Hub で公開されている Tomcat イメージ（Tomcat 8.5.23）を Pull してみます。

#### 4.2. IntelliJ から Pull 実施
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/9cea7d25-ff31-9d51-5060-d1fc73ce8642.png)

IntelliJ の Docker ビューで右クリックし、Pull Image...を選択します。

#### 4.3. レジストリの指定
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/b16b7783-b69a-baa7-b610-691c6dc9349c.png)

3 で設定した ユーザ認証している Docker Hub はイメージを登録 (push) する時に使用します。

#### 4.4. イメージの指定
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/10dc282d-d5ef-f211-f7db-3a363e2095bb.png)
Pull する対象のイメージとそのタグを指定し、OK をクリックします。

### 5. Docker コンテナの起動
#### 5.1. Docker コンテナ作成メニューの表示
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/1ac99930-4882-519d-9355-349763b452ad.png)

IntelliJ の Docker ビューから 右クリックで Create container を選択します。

#### 5.2. コンテナの起動
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/d6fa89e6-c7db-6650-711a-0fc93096008e.png)
コンテナ名を指定します。

![image](https://qiita-image-store.s3.amazonaws.com/0/127983/50e6d5d5-d567-8cfd-d5bb-69cc9467ddd2.png)
必要に応じて、ポートバインディングなどコンテナに対して追加設定を行う事も可能です。
設定後、Run をクリックしてコンテナを開始します。

#### 5.3. コンテナ起動の確認
![image](https://qiita-image-store.s3.amazonaws.com/0/127983/d43068b5-5928-9ed9-d200-23c25f634930.png)

ホスト環境のポート8888にアクセスします。
Tomcat が起動していることが確認できます。

## まとめ
IntelliJ 上で Docker の管理を行うことが出来るようになりました。
Tomcat などのアプリケーションサーバ・コンテナにアプリケーションをデプロイするには、Docker のボリューム機能を使ってビルドしたアプリケーションをマウントするとできそうですね。