redash用のdocker-compose.yml

EC2のAMIがありますがだいぶバージョンが古いようなので&活発に開発が続いてるので，最新に付いていくためにがんばってみます．

```yaml:docker-compose.yml
version: '2'
services:
  redash:
    image: redash/redash:0.12.0.b2072
    ports:
      - "5000:5000"
    links:
      - redis
      - postgres
    environment:
      REDASH_STATIC_ASSETS_PATH: "../rd_ui/dist/"
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://redash:redash@postgres:5432/redash"
      REDASH_COOKIE_SECRET: "MEExaMPle2zUhDa3PwExAMp1ecT2KF"
      REDASH_GOOGLE_APPS_DOMAIN: "example.jp"
      REDASH_GOOGLE_CLIENT_ID: "2345EXAMPLE3-69Examp1e5d7jngstiu1sExamp1e3g8h.apps.googleusercontent.com"
      REDASH_GOOGLE_CLIENT_SECRET: "gVEXAmpLeJ61VqVlexAmPLeY"
      REDASH_HOST: "https://redash.example.jp"
      REDASH_MAIL_SERVER: "smtp.example.jp"
      REDASH_MAIL_PORT: 587
      REDASH_MAIL_USE_TLS: "True"
      REDASH_MAIL_USERNAME: "username"
      REDASH_MAIL_PASSWORD: "password"
      REDASH_MAIL_DEFAULT_SENDER: "redash@example.jp"
      REDASH_DATE_FORMAT: "YYYY-MM-DD"
      REDASH_ALLOW_SCRIPTS_IN_USER_INPUT: "True"
    volumes:
      - .:/opt/redash/local
      - ./setup/docker/supervisord/supervisord.conf~:/opt/redash/supervisord/supervisord.conf:ro
    #  - /etc/localtime:/etc/localtime:ro
  redis:
    image: redis:2.8
  postgres:
    image: postgres:9.3
    environment:
      POSTGRES_USER: "redash"
      POSTGRES_DB: "redash"
      POSTGRES_PASSWORD: "redash"
    volumes:
     - /opt/postgres-data:/var/lib/postgresql/data
  redash-nginx:
    image: redash/nginx:latest
    ports:
      - "80:80"
    links:
      - redash

```

## 設定値の注意
### `REDASH_DATABASE_URL`
yamlの下のほうにある`postgres`のユーザ名／パスワード／DB名とうまく合わせましょう．

### `REDASH_GOOGLE_*`
GoogleAppsで認証するならGoogle側でも設定が必要

### `REDASH_MAIL_*`
メール通知とかしたいなら設定．パスワードリマインドしたいならメール必要．

### `REDASH_DATE_FORMAT`
これ設定しないと，クエリ結果にTimestampがあったときに`MM/DD/YY`になってしまって読み辛い．

### `REDASH_ALLOW_SCRIPTS_IN_USER_INPUT`
Dashboardに置くテキストにJavaScriptが使えるようになる．Datepickerとか使えるのでクエリにパラメータ使いたい場合は便利．
参考：
![image](https://qiita-image-store.s3.amazonaws.com/0/18974/4bc3ecab-70a6-f154-50da-b50603d1a312.png)

### `supervisord.conf` を上書きしてるやつ
クエリ実行の並列度を上げるため．このへんはホストマシンのスペックにもよるので，不足してると思ったらやれば良い

## 実行
dockerとdocker-composeをインストールしたら

```bash
docker-compose up -d 
```

## 確認
```shell-session
ec2-user@redash$ docker-compose ps
        Name                       Command               State                Ports
-------------------------------------------------------------------------------------------------
redash_postgres_1       /docker-entrypoint.sh postgres   Up      5432/tcp
redash_redash-nginx_1   nginx -g daemon off;             Up      443/tcp, 0.0.0.0:80->80/tcp
redash_redash_1         supervisord -c /opt/redash ...   Up      0.0.0.0:5000->5000/tcp, 9001/tcp
redash_redis_1          docker-entrypoint.sh redis ...   Up      6379/tcp
```

あとはブラウザからEC2インスタンスのIPへアクセスすれば良い．

## バージョンアップ
DockerHubでre:dashの新しいバージョンのタグを探す(けっこう頻繁に上がってます)

docker-compose.ymlの`image: redash/redash:0.12.0.b2072`部分のタグを書き換えてから

```bash
# redashコンテナ止めて
docker-compose stop redash
# redashコンテナ削除して
docker-compose rm -f redash
# redashコンテナ再作成
docker-compose up -d redash
```

※migrationとかどうやるのが正解なんだろう．．．?