Redashのインストールでコケたときのメモ

# はじめに

OSSのデータ可視化ツールであるRedashをインストールしようとして詰まったので、メモします。

# 環境

MacBookAirを使用しています。OSなどは次の通りです。

```
$sw_vers
ProductName:	Mac OS X
ProductVersion:	10.13.6
BuildVersion:	17G14033

$docker --version
Docker version 20.10.0, build 7287ab3
```

# Redashについて

https://redash.io/
OSSのデータ可視化ツールで、webブラウザからダッシュボードなどを作成、共有することができます。
詳細は割愛しますが、Pythonが使えるということもあって、試してみようと思いました。
SaaS版は有償ですが、ローカルにインストールして動かす分には無償で使えます。

# インストール

下のURLに沿ってインストールしていきます。
https://redash.io/help/open-source/dev-guide/docker

## 1.Gitからcloneしてくる

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

## 2.docker-composeでビルドする

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

これだけかーと思っていたら、エラーが。


```
ERROR: Cannot install -r requirements_all_ds.txt (line 12), -r requirements_all_ds.txt (line 21) and -r requirements_all_ds.txt (line 34) because these package versions have conflicting dependencies.

The conflict is caused by:
    atsd-client 3.0.5 depends on python-dateutil
    azure-kusto-data 0.0.35 depends on python-dateutil>=2.8.0
    dql 0.5.26 depends on python-dateutil<2.7.0

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies
ERROR: Service 'server' failed to build : The command '/bin/sh -c if [ "x$skip_ds_deps" = "x" ] ; then pip install -r requirements_all_ds.txt ; else echo "Skipping pip install -r requirements_all_ds.txt" ; fi' returned a non-zero code: 1
```

ググってみると、下のURLがヒット。

https://discuss.redash.io/t/issue-with-redash-build/7646

どうも同じエラーで詰まった人がいた模様。コメントを見ると、

> I think you can fix this in the short term by removing dql from your >requirements.txt file. The issue is DQL requires python-dateutil of 2.7 or older while azure-kuso-data needs 2.8 or above.

とのことで、```dql```を消せばよいとのこと。だったら消しておいてくれればいいのに...  
ということで、```requirements_all_ds.txt```の中で```dql==0.5.26```となっている行を削除して```docker-compose up -d```しました。
すると再びエラーが。

```
The conflict is caused by:
    The user requested mysqlclient==1.3.14
    memsql 3.0.0 depends on mysqlclient==1.3.13

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: Cannot install -r requirements_all_ds.txt (line 19) and mysqlclient==1.3.14 because these package versions have conflicting dependencies.
ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies
ERROR: Service 'server' failed to build : The command '/bin/sh -c if [ "x$skip_ds_deps" = "x" ] ; then pip install -r requirements_all_ds.txt ; else echo "Skipping pip install -r requirements_all_ds.txt" ; fi' returned a non-zero code: 1
```

またかよ...ということで、同じファイル内で```memsql```が記載されている行を削除。
再び```docker-compose up -d```すると、最後まで動きました。
念のため、コンテナが起動しているか確認。

```
$docker container ls
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                            NAMES
7381b4f01310   redash_worker         "/app/bin/docker-ent…"   3 minutes ago   Up 3 minutes   5000/tcp                                         redash_worker_1
febf478bfd78   redash_scheduler      "/app/bin/docker-ent…"   3 minutes ago   Up 3 minutes   5000/tcp                                         redash_scheduler_1
edddd8203768   redash_server         "/app/bin/docker-ent…"   3 minutes ago   Up 3 minutes   0.0.0.0:5000->5000/tcp, 0.0.0.0:5678->5678/tcp   redash_server_1
c1e85b4cfa69   redis:3-alpine        "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes   6379/tcp                                         redash_redis_1
d32426258263   djfarrelly/maildev    "bin/maildev --web 8…"   3 minutes ago   Up 3 minutes   25/tcp, 0.0.0.0:1080->80/tcp                     redash_email_1
56e86d84388a   postgres:9.5-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes   0.0.0.0:15432->5432/tcp                          redash_postgres_1
```

確かに一通り動いてそう。

## 3.クライアントで必要なもののインストール

```
npm install
```

エラーなく動いた。

## 4.データベース作成

手順に書かれているように実行。エラーなく動いた。

```
# Create tables
docker-compose run --rm server create_db

# Create database for tests
docker-compose run --rm postgres psql -h postgres -U postgres -c "create database tests"
```

## 5.webpack Dev Server起動

ここまで行ったところで```http://localhost:5000/```でRedashが使えると書かれていますが、
実際にアクセスするとメールアドレスなどを入力する画面が出て、セットアップボタンを押すと結局エラーに（画面キャプチャし忘れました...）。

以下のコマンドでクライアント側も起動してあげる必要がありそうです。

```
npm run build
npm run start
```

ここまででインストールと起動は終了。


# 動作確認


```http://localhost:5000/``` にブラウザでアクセスすると、無事にアクセスできました。

![capture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329888/1df00b88-33a2-017d-3e3f-b57051ada45e.png)

# まとめ

Redashのインストールで詰まった箇所の対応を簡単にメモしました。
今後はRedashを動かしてみたいと思います。