(2016-07-18 追記: data sourceにpythonを追加するため、redashのrunコマンドに「-e REDASH_ADDITIONAL_QUERY_RUNNERS=”redash.query_runner.python”」を追加)

さてre:dashは良さげなので入れてみましょう。

公式ドキュメントのsetupのページ( http://docs.redash.io/en/latest/setup.html )を見ると、

AWS、Google Compute Engine、Docker Compose、Heroku など充実したInstrructionですね。

ですが

使いたいデータソースが外部ネットワークから触れない場所にある

というのは結構ありうるユースケースじゃないでしょうか。その場合re:dashも同様のネットワークに置きたいところです。

さらに、

CentOS 6系なんだけど

というのもまたありそうな状況です。Dockerは1.8以降ではCentOS6系をサポートしなくなり、docker engine/swarm/composeという構成が完成した(docker composeが追加された) のはDocker 1.8以降だったと記憶しています。

まあ要するにCentOS6系だとDocker Composeが使えないわけです。

でもせっかくDockerfileが用意されてるんだから使いたいすわ。ということだと思います。わかります。

Docker composeあんまり詳しくないのですけど、re:dashのgithubレポジトリのdocker-compose-example.yml見るとなんかほぼdocker runコマンド群を構造的に記述してるだけみたいですね。

https://github.com/getredash/redash/blob/master/docker-compose-example.yml

ではインストールしてみましょう。

インストール


# re:dashレポジトリのclone
git clone https://github.com/getredash/redash.git
cd redash/

# webアプリ用のDBコンテナを起動
# データボリュームのディレクトリを用意
mkdir /home/hogehoge/redash_data
sudo docker run --name postgres -d -v /home/hogehoge/redash_data:/var/lib/postgresql/data postgres:9.3

# redisのコンテナを起動
sudo docker run --name redis -d redis:2.8

# テーブルの初期設定
# redash/setup/docker/create_database.shに記述されている内容を実行している
sudo docker run --rm --name redash -p 5000:5000 --link redis:redis --link postgres:postgres -e REDASH_STATIC_ASSETS_PATH="../rd_ui/dist/" -e REDASH_LOG_LEVEL="INFO" -e REDASH_REDIS_URL="redis://redis:6379/0" -e REDASH_DATABASE_URL="postgresql://postgres@postgres/postgres" -e REDASH_COOKIE_SECRET="sugoitoken" redash/redash:latest /opt/redash/current/manage.py database create_tables
sudo docker run --rm --name redash -p 5000:5000 --link redis:redis --link postgres:postgres -e REDASH_STATIC_ASSETS_PATH="../rd_ui/dist/" -e REDASH_LOG_LEVEL="INFO" -e REDASH_REDIS_URL="redis://redis:6379/0" -e REDASH_DATABASE_URL="postgresql://postgres@postgres/postgres" -e REDASH_COOKIE_SECRET="sugoitoken" redash/redash:latest /opt/redash/current/manage.py users create --admin --password admin "Admin" "admin"

# redashコンテナを一時的に起動し、linkしたredisとpostgresのipを環境変数から取得
temp_env_file=$(mktemp /tmp/pg_env.XXXXXX || exit 3)
sudo docker run --rm --link redis:redis --link postgres:postgres redash/redash:latest env > "$temp_env_file"

# リダイレクトした環境変数の情報をホストPCにも適用する
source "$temp_env_file"
# 取得したIPを使ってpostgres上にredash用のユーザを作成
sudo docker run --rm -v /home/hogehoge/redash_data:/var/lib/postgresql/data postgres:9.3 psql -h $POSTGRES_PORT_5432_TCP_ADDR -p $POSTGRES_PORT_5432_TCP_PORT -U postgres -c "CREATE ROLE redash_reader WITH PASSWORD 'redash_reader' NOCREATEROLE NOCREATEDB NOSUPERUSER LOGIN"
sudo docker run --rm -v /home/hogehoge/redash_data:/var/lib/postgresql/data postgres:9.3 psql -h $POSTGRES_PORT_5432_TCP_ADDR -p $POSTGRES_PORT_5432_TCP_PORT -U postgres -c "grant select(id,name,type) ON data_sources to redash_reader;"
sudo docker run --rm -v /home/hogehoge/redash_data:/var/lib/postgresql/data postgres:9.3 psql -h $POSTGRES_PORT_5432_TCP_ADDR -p $POSTGRES_PORT_5432_TCP_PORT -U postgres -c "grant select(id,name) ON users to redash_reader;"
sudo docker run --rm -v /home/hogehoge/redash_data:/var/lib/postgresql/data postgres:9.3 psql -h $POSTGRES_PORT_5432_TCP_ADDR -p $POSTGRES_PORT_5432_TCP_PORT -U postgres -c "grant select on events, queries, dashboards, widgets, visualizations, query_results to redash_reader;"

# redashのメタデータを作成
sudo docker run --rm --name redash -p 5000:5000 --link redis:redis --link postgres:postgres -e REDASH_STATIC_ASSETS_PATH="../rd_ui/dist/" -e REDASH_LOG_LEVEL="INFO" -e REDASH_REDIS_URL="redis://redis:6379/0" -e REDASH_DATABASE_URL="postgresql://postgres@postgres/postgres" -e REDASH_COOKIE_SECRET="sugoitoken" redash/redash:latest /opt/redash/current/manage.py ds new --name "re:dash metadata" --type "pg" --options "{\"user\": \"redash_reader\", \"password\": \"redash_reader\", \"host\": \"postgres\", \"dbname\": \"postgres\"}"

# redashコンテナを起動
# -e REDASH_ADDITIONAL_QUERY_RUNNERS="redash.query_runner.python" はpython実行を可能にするため必要
sudo docker run --name redash -d -p 5000:5000 --link redis:redis --link postgres:postgres -e REDASH_STATIC_ASSETS_PATH="../rd_ui/dist/" -e REDASH_LOG_LEVEL="INFO" -e REDASH_REDIS_URL="redis://redis:6379/0" -e REDASH_DATABASE_URL="postgresql://postgres@postgres/postgres" -e REDASH_COOKIE_SECRET="sugoitoken"-e REDASH_ADDITIONAL_QUERY_RUNNERS="redash.query_runner.python" redash/redash:latest

# nginxコンテナを起動
sudo docker run --name redash-nginx -d -p 80:80 --link redash:redash redash/nginx:latest

たったこれだけです。簡単ですね。では最後に起動したnginxにブラウザからアクセスします。

unnamed

ログインはadmin adminで出来ます。やったね!

関連記事

5月分のBanggoodクーポン Mi Pad 4 Plusもあるよ

Kindle Cloud Readerで洋書を読む時にgoogle翻訳を使う

シグマのフルサイズ超広角Artレンズを買った

numpyで3次元座標インデックスの配列を作る方法

300ドル15W中華半導体レーザーカッター買った その5

deep learningフレームワーク・ライブラリをGPU環境のwindows10にインストールする方法と応用まとめ

コメント

コメントを返信する

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です