6
11

More than 3 years have passed since last update.

Redashのローカル環境構築手順

Posted at

最初に

様々なデータソースと接続ができ、簡単にダッシュボードが構築できる 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
git clone https://github.com/getredash/setup
cd setup

そのまま、 setup.sh を実行すればOK...と言いたいところですが、この setup.shUbuntu 18.04 前提です。すこしsetup.sh を修正します。WSLでUbuntuのBashが使える前提で、 C:\opt\redash をインストールフォルダにします。そのため、 REDASH_BASE_PATH=/mnt/c/opt/redash と書き換え、フォルダ作成も自分でやってしまいます。

修正した setup.sh
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を実行します。

setupの実行
sh setup.sh

そうすると、C:\opt\redash 配下に docker-compose-yml および env ファイルが作成されていると思います。

そこでそのままdocker-composeで動くような気がしましたが、どうもPostgreSQLのVolumeマウントが上手く行かないので docker-compose.yml を修正します。

修正した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が存在するのでむしろ構築が早い気もしますが、手元でまず検証したい人にオススメします
6
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
11