AWS EC2にdockerベースのredashを一から設定して起動するまで

![スクリーンショット 2017-05-31 0.22.43.png](https://qiita-image-store.s3.amazonaws.com/0/112537/63ce8ef8-422d-bd17-5e35-f6e6e8520726.png)

オープンソースのDashboardツールredash。
postgresからAWS redshiftなど各種DB/DWHの情報をビジュアライズできるツール。
最近ではAirbnb社が開発したsupersetも注目されてますが、流行りのredashをインストールしてみた。

AWS EC2にdockerベースのredashを一から設定して起動するまでのセットアップメモ。

ポイントは以下
- redash、postgresql、nginx、redisで構成
- 全部公式のdockerイメージがある
- docker-composeで簡単一括実行
- 諸々のソースはredash公式のGit Hubリポジトリに公開されている。

※nginxはwebサーバ、postgreはクエリの実行結果やデータの保存、redisはタスクキューに使用するらしい。

###1) EC2に最低限必要なツールをセットアップ 
※amazon linux t2microインスタンスを利用

最初のおまじないと、docker & gitインストール

```
sudo yum update -y
sudo yum install -y docker git
```

sudo権限なしでdockerコマンドを使えるようにする

```
sudo usermod -a -G docker ec2-user
exit #一旦ログオフし再接続が必要
```

docker-composeインストール
※yum install docker-composeとかできると見せかけてできない

※最新バージョンは下記で確認。1.11.2の部分を適宜書き換える。
https://github.com/docker/compose/releases

```
sudo curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```

###2) Git Hubからredash一式をgit close

```
git clone https://github.com/getredash/redash.git
```

https://github.com/getredash/redash

###3) redashのdocker-compose.ymlを編集

cloneしたredash/docker-compose.ymlを編集する。
もともとのdocker-compose.ymlはプロダクション利用には不向きの設定らしく、redash/docker-compose.production.ymlをコピーし、編集する。
編集ポイントは、postgresqlのvolumeとpassword関連。デフォルトではコメントアウトまたは何も記載がない。

docker-compose.yml

```
# This is an example configuration for Docker Compose. Make sure to atleast update
# the cookie secret & postgres database password.
#
# Some other recommendations:
# 1. To persist Postgres data, assign it a volume host location.
# 2. Split the worker service to adhoc workers and scheduled queries workers.
version: '2'
services:
  server:
    image: redash/redash:latest
    command: server
    depends_on:
      - postgres
      - redis
    ports:
      - "5000:5000"
    environment:
      PYTHONUNBUFFERED: 0
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
      REDASH_COOKIE_SECRET: veryverysecret
  worker:
    image: redash/redash:latest
    command: scheduler
    environment:
      PYTHONUNBUFFERED: 0
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
      QUEUES: "queries,scheduled_queries,celery"
      WORKERS_COUNT: 2
  redis:
    image: redis:3.0-alpine
  postgres:
    image: postgres:9.5.6-alpine
    volumes:  #コメントアウトを取る
      - /home/ec2-user/postgres-data:/var/lib/postgresql/data
    environment: #追加する
      - POSTGRES_USER:'test'
      - POSTGRES_PASSWORD:'pwd'
      - POSTGRES_DB:'mydb'
  nginx:
    image: redash/nginx:latest
    ports:
      - "80:80"
    depends_on:
      - server
    links:
      - server:redash
```

postgresのデータは永続化するためホストにvolumeマウントする。
上記設定に応じてホスト側にマウントパスディレクトリを作成しておく。

```
sudo mkdir -p /home/ec2-user/postgres-data
```

###4) docker-composeでredash（及び関連ツール）起動

```
docker-compose run --rm server create_db
```
データベースの初期化

```
docker-compose up
```
redash起動
バックグラウンド実行は -d オプションを追加

###5) ブラウザで確認

EC2側で設定したパブリックIP宛にブラウザで起動すると、Redisログインページが表示される。
※EC2のSG等で80番のインバウンドが許可されていること。


###6) CLIでユーザ追加

通常はコンソールからユーザ追加可能だが、メール連携による認証フローが必要。
閉域環境利用など手順を簡略化したい場合は、CLIで追加可能

```
manage.py users create [メールアドレス（適当）] "[ユーザ名]"
```

参考）
http://qiita.com/wizpra-koyasu/items/aa8b3fc069816d91ae05

#最新版状況
2019/7時点

・v7.0.0が出た
・docker-compose.production.yamlがなくなっており、redash/setup/docker-compose.yamlを使う
・Utuntu18.04用のセットアップスクリプトが提供されており、構築がもっと簡単に