(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にブラウザからアクセスします。
ログインはadmin adminで出来ます。やったね!
コメント