DockerとAlfredでMySQLとRedisのお手軽環境構築

### はじめに
2020 年度 XTech グループアドベントカレンダーの 15 日目の記事です。
エキサイト株式会社、新卒の西牧です。

今回は、Docker と Alfred で MySQL と Redis をお手軽に環境構築する方法を紹介したいと思います。
必要なもの Docker で立ち上げて、Alfred でどこからでも呼び出せるようにするという流れです。
コードは[こちら](https://github.com/yuya-nishimaki/db-redis-template)。

### 環境
macOS: 10.15.1
docker-compose: 1.27.4
Alfred: 4.0.9

### docker-composeですべて立ち上げる
docker-compose で以下のものを立ち上げます。

* MySQL
* Redis
* adminer
* redisinsight

MySQL の GUI クライアントには [adminer](https://www.admifner.org/) を、Redis の GUI クライアントには [redis-insight](https://redislabs.com/redis-enterprise/redis-insight/) を使います。
理由としては、デスクトップアプリより web アプリがよかった（個人的にはできるだけ web で完結したい）のと、軽量なことぐらいです。
ちなみに以前は、Sequel Pro と Medis を使っていましたが、どちらもあまり使いやすくなく、adminer と redisinsight の方が個人的にはいいと思います。

```console
$ docker-compose up -d
```

```yaml
version: '3'

services:
  redis:
    image: redis:latest
    restart: always
    ports:
      - 6378:6379
    command: redis-server /usr/local/etc/redis/redis.conf
    volumes:
      - ./redis/data:/data
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf

  redisinsight:
    image: redislabs/redisinsight
    restart: always
    ports:
      - 8011:8001
    volumes:
      - ./redisinsight:/db
    depends_on: 
      - redis

  mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_USER: docker
      MYSQL_PASSWORD: docker
      MYSQL_ROOT_PASSWORD: local_root_password
      MYSQL_DATABASE: db
    ports:
      - 3307:3306
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf.d:/etc/mysql/conf.d

  adminer:
    image: adminer:latest
    restart: always
    environment:
      # choose your favorite design from https://www.adminer.org/
      ADMINER_DESIGN: lucas-sandery
    ports:
      - 8090:8080
    depends_on:
      - mysql
```

### 動作確認
立ち上げられると、GUI クライアントを開いて、MySQL と Redis に接続してみます。

* adminer: http://localhost:8090/
* redisinsight: http://localhost:8011/

adminer を開くとこんな感じです。デザインは環境変数で変えられます。
接続情報のサーバには、`docker-compose.yml` で書いたサービス名 mysql を入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270694/312e6309-04c5-5362-e284-40f7cfc05cdf.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270694/fc1fa692-f415-f021-89da-eb2fbd361283.png)

redisinsight はこんな感じです。
接続情報は以下の通りです。

* Name: 任意の名前
* Host: `docker-compose.yml` で書いたサービス名 redis
* Port: 6379

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270694/46433c1c-c0c6-45d2-cbea-9fdedd1351fd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270694/41fb2dee-5f30-d0ff-0914-aa879c7a8f65.png)

### GUI クライアントをどこからでも呼び出せるようにする
Alfred を使います。
Alfredとはなんぞや？という方は、[Alfredを使いこなせてない君に！【Alfredの使い方完全版】](https://qiita.com/jackchuka/items/ccd3f66f6dd00481b98b)
いうたら、spotlight 検索の上位互換みたいなやつです。
Alfred の Web Search に 先ほどの http://localhost:8090/ とかを登録しておくと、ポート番号を覚えておく必要もないし、どっからでも呼び出せるので便利です。
Web Search というのは、URL にキーワードを紐付けて登録しておくと、Alfred でそのキーワードを実行することで、登録した URL をブラウザで開けるというものです。
画像のようにして http://localhost:8090/ を登録してみます。

* Search URL: http://localhost:8090/
* Title: 任意の名前
* Keyword: 任意の単語

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270694/334bb84e-2f8d-295e-3a32-a13e0f4383f5.png)

登録後、実行すると、登録した URL が自動で開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270694/b9009a83-ef8c-b72a-b13d-89e16dc94108.png)

### おわりに
最近は Docker で入れられるツールも増えてきているので、うまく活用すると、オンボーディングコストさげられそうだなと、これ書いてて思いました。
みなさんもためしてみてください〜