最初に
様々なデータソースと接続ができ、簡単にダッシュボードが構築できる Redash を、ローカルでdocker-composeを利用して簡単に構築する手順です。
環境
- Windows10
前提
公式ドキュメント? に従うと redash リポジトリをgit cloneし、用意されているdocker-composeを利用する手順が記載されていますが、こちらはRedashそのものの開発者のを対象したものになります。
開発者用の docker-compose.yml を利用すると、Redash自体のコンテナイメージをビルドするため、npm installやpip installなどが発生して、かなりビルド時間がかかるためオススメはしません。
単純にローカルでRedashを利用したいだけの人は、このリポジトリを利用します。
https://github.com/getredash/setup
今回は、こちらのリポジトリを利用します。
構築手順
まずはリポジトリをgit cloneします。
git clone https://github.com/getredash/setup
cd setup
そのまま、 setup.sh
を実行すればOK...と言いたいところですが、この setup.sh
は Ubuntu 18.04
前提です。すこしsetup.sh を修正します。WSLでUbuntuのBashが使える前提で、 C:\opt\redash
をインストールフォルダにします。そのため、 REDASH_BASE_PATH=/mnt/c/opt/redash
と書き換え、フォルダ作成も自分でやってしまいます。
修正した setup.sh
#!/usr/bin/env bash
# This script setups dockerized Redash on Ubuntu 18.04.
set -eu
REDASH_BASE_PATH=/mnt/c/opt/redash
create_directories() {
if [[ ! -e $REDASH_BASE_PATH ]]; then
sudo mkdir -p $REDASH_BASE_PATH
sudo chown $USER:$USER $REDASH_BASE_PATH
fi
if [[ ! -e $REDASH_BASE_PATH/postgres-data ]]; then
mkdir $REDASH_BASE_PATH/postgres-data
fi
}
create_config() {
if [[ -e $REDASH_BASE_PATH/env ]]; then
rm $REDASH_BASE_PATH/env
touch $REDASH_BASE_PATH/env
fi
COOKIE_SECRET=$(pwgen -1s 32)
SECRET_KEY=$(pwgen -1s 32)
POSTGRES_PASSWORD=$(pwgen -1s 32)
REDASH_DATABASE_URL="postgresql://postgres:${POSTGRES_PASSWORD}@postgres/postgres"
echo "PYTHONUNBUFFERED=0" >> $REDASH_BASE_PATH/env
echo "REDASH_LOG_LEVEL=INFO" >> $REDASH_BASE_PATH/env
echo "REDASH_REDIS_URL=redis://redis:6379/0" >> $REDASH_BASE_PATH/env
echo "POSTGRES_PASSWORD=$POSTGRES_PASSWORD" >> $REDASH_BASE_PATH/env
echo "REDASH_COOKIE_SECRET=$COOKIE_SECRET" >> $REDASH_BASE_PATH/env
echo "REDASH_SECRET_KEY=$SECRET_KEY" >> $REDASH_BASE_PATH/env
echo "REDASH_DATABASE_URL=$REDASH_DATABASE_URL" >> $REDASH_BASE_PATH/env
}
setup_compose() {
REQUESTED_CHANNEL=stable
LATEST_VERSION=`curl -s "https://version.redash.io/api/releases?channel=$REQUESTED_CHANNEL" | json_pp | grep "docker_image" | head -n 1 | awk 'BEGIN{FS=":"}{print $3}' | awk 'BEGIN{FS="\""}{print $1}'`
cd $REDASH_BASE_PATH
GIT_BRANCH="${REDASH_BRANCH:-master}" # Default branch/version to master if not specified in REDASH_BRANCH env var
wget https://raw.githubusercontent.com/getredash/setup/${GIT_BRANCH}/data/docker-compose.yml
sed -ri "s/image: redash\/redash:([A-Za-z0-9.-]*)/image: redash\/redash:$LATEST_VERSION/" docker-compose.yml
echo "export COMPOSE_PROJECT_NAME=redash" >> ~/.profile
echo "export COMPOSE_FILE=/opt/redash/docker-compose.yml" >> ~/.profile
export COMPOSE_PROJECT_NAME=redash
export COMPOSE_FILE=/opt/redash/docker-compose.yml
sudo docker-compose run --rm server create_db
sudo docker-compose up -d
}
#create_directories
#create_config
setup_compose
続いて、手動でフォルダを作成します。
mkdir C:\opt\redash
このまま、WSL Bashでsetup.shを実行します。
sh setup.sh
そうすると、C:\opt\redash
配下に docker-compose-yml
および env
ファイルが作成されていると思います。
そこでそのままdocker-composeで動くような気がしましたが、どうもPostgreSQLのVolumeマウントが上手く行かないので docker-compose.yml
を修正します。
修正したdocker-compose.yml
version: "2"
x-redash-service: &redash-service
image: redash/redash:8.0.0.b32245
depends_on:
- postgres
- redis
env_file: /opt/redash/env
restart: always
services:
server:
<<: *redash-service
command: server
ports:
- "5000:5000"
environment:
REDASH_WEB_WORKERS: 4
scheduler:
<<: *redash-service
command: scheduler
environment:
QUEUES: "celery"
WORKERS_COUNT: 1
scheduled_worker:
<<: *redash-service
command: worker
environment:
QUEUES: "scheduled_queries,schemas"
WORKERS_COUNT: 1
adhoc_worker:
<<: *redash-service
command: worker
environment:
QUEUES: "queries"
WORKERS_COUNT: 2
redis:
image: redis:5.0-alpine
restart: always
postgres:
image: postgres:9.6-alpine
env_file: /opt/redash/env
volumes:
- pg-data:/var/lib/postgresql/data # 修正
restart: always
nginx:
image: redash/nginx:latest
ports:
- "80:80"
depends_on:
- server
links:
- server:redash
restart: always
volumes: # 修正
pg-data: # 修正
external: true # 修正
上記のように修正するとやっとおしまいです。
あとは、以下のようにdockerコマンドで volumne を作成し、 PostgreSQLにスキーマを作成し、起動するだけです。
> docker volume create --name pg-data
> docker-compose run --rm server create_db
> docker-compose up -d
ブラウザで http://localhost:5000/
にアクセスすればRedashの初期画面が表示されます。
お疲れさまでした!
まとめ
- Redashはdocker-composeで簡単に起動できる、と思ったんですがちょっと調整が必要
- PostgreSQLのVolumne Mount、Windowsだと上手くいかない時がある
- ローカルで動くと安心しますね。ローカルより、AWSだとAMIが存在するのでむしろ構築が早い気もしますが、手元でまず検証したい人にオススメします