RedashV8をCentOS7にインストールする
ダッシュボードツールOSSであるRedashを触りたくなったので、使い慣れているCentOS7にインストールしたい。
しかし、Redash公式のセットアップ手順にはCentOS向けの手順が記載されていない。
Ubuntu 18.04向けの手順を参考に、CentOS7にインストールしたのでメモ。
環境
・CentOS7
・Redash 8.0.0
・Docker 20.10.9
・Docker Compose 1.29.2
セットアップ方法の検討
Redash公式のセットアップ手順を見たところ、参考になりそうなセットアップ方法が2つあった。
方法1Dockerイメージのビルドから行う方法
OS指定の記載はなく、Redashコンテナのイメージをビルドし、起動する方法。まずはこちらを試した。
→ビルド中に以下のエラーが出て失敗した。RedashV8は2022/03/28時点で最新安定版だが、リリースは2019-10-27なので、Dockerfileが古くなっているのかもしれない。ここを追うのは筋が悪そうなので、没。
ERROR: Command errored out with exit status 1: command: /usr/local/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-Komeif/pymapd/setup.py'"'"'; __file__='"'"'/tmp/pip-install-Komeif/pymapd/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info cwd: /tmp/pip-install-Komeif/pymapd/
方法2 Ubuntu 18.04上にDockerComposeで展開する方法
Ubuntu 18.04をDockerホストとして、セットアップスクリプトを使ってRedashコンテナを立ち上げる手順。
今回は慣れているCentOS7で構築したいので、そのままは使えない。
→方法1がダメだったので、このセットアップスクリプトを参考に作業を行うことにした。
セットアップ作業
セットアップスクリプトの確認
セットアップスクリプトをダウンロードして、何をしているのか確認する。
# wget https://github.com/getredash/setup/archive/refs/heads/master.zip # unzip master.zip # ls -l setup-master/ 合計 16 -rw-r--r-- 1 root root 1311 10月 28 2019 LICENSE -rw-r--r-- 1 root root 1294 10月 28 2019 README.md drwxr-xr-x 2 root root 130 10月 28 2019 data -rw-r--r-- 1 root root 2354 10月 28 2019 packer.json -rw-r--r-- 1 root root 3106 10月 28 2019 setup.sh
setup.shの中身を見ると、4つの関数を実行しており、それぞれ以下のような処理をしている。
・install_docker() :dockerとdocker composeのインストール
・create_directories():Redashコンテナがマウントするディレクトリとして、/opt/redashと/opt/redash/postgres-dataを作成する
・create_config():パスワード等を生成して、redashコンテナが使う環境変数として、/opt/redash/envファイルに書き込む
・setup_compose():data/docker-compose.ymlのimage名をstable最新版のものに置換して「docker-compose -p redash -f /opt/redash/docker-compose.yml compose.yaml up -d」を実行する。
→この内容に相当する作業をCentOS7で実行してみる。
install_docker()相当の作業:Docker、Docker Composeのインストール
Docker公式通りにDockerとDocker Composeをインストールした。
create_directories()相当:redash用ディレクトリ作成
ディレクトリを作成する。
# mkdir -p /opt/redash/postgres-data # ls -l /opt/redash/postgres-data 合計 0
create_config()相当:Redashコンテナ用環境変数設定
パスワードを適当に生成する。
# yum -y install pwgen # pwgen -1s 32 ohJehIt7GfyCPG28UPbt3BpGFsCZuiBz # pwgen -1s 32 ghPWRmDB7wQJqXKyVYERWyaRbaGkY73E
envファイルを作成する。
# export REDASH_BASE_PATH=/opt/redash # 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" >> $REDASH_BASE_PATH/env # echo "REDASH_COOKIE_SECRET=ohJehIt7GfyCPG28UPbt3BpGFsCZuiBz" >> $REDASH_BASE_PATH/env # echo "REDASH_SECRET_KEY=ghPWRmDB7wQJqXKyVYERWyaRbaGkY73E" >> $REDASH_BASE_PATH/env # echo "REDASH_DATABASE_URL=postgresql://postgres:postgres@postgres/postgres" >> $REDASH_BASE_PATH/env #cat /opt/redash/env PYTHONUNBUFFERED=0 REDASH_LOG_LEVEL=INFO REDASH_REDIS_URL=redis://redis:6379/0 POSTGRES_PASSWORD=postgres REDASH_COOKIE_SECRET=ohJehIt7GfyCPG28UPbt3BpGFsCZuiBz REDASH_SECRET_KEY=ghPWRmDB7wQJqXKyVYERWyaRbaGkY73E REDASH_DATABASE_URL=postgresql://postgres:postgres@postgres/postgres
setup_compose()相当:compose起動
最新安定版バージョンのコンテナイメージ名を確認する。「redash/redash:8.0.0.b32245」であることが分かる。
# curl -s "https://version.redash.io/api/releases?channel=stable" | jq | grep "docker_image" | head -n 1 "docker_image": "redash/redash:8.0.0.b32245"
composeに書かれているバージョンも「redash/redash:8.0.0.b32245」なので、置換する必要はない。
# grep image ./setup-master/data/docker-compose.yml image: redash/redash:8.0.0.b32245 image: redis:5.0-alpine image: postgres:9.6-alpine image: redash/nginx:latest
redashのディレクトリにcomposeファイルをコピーする。
# cp -pr ./setup-master/data/docker-compose.yml /opt/redash/
DBの初期設定をする。
# docker-compose -p redash -f /opt/redash/docker-compose.yml run --rm server create_db Creating network "redash_default" with the default driver Creating redash_postgres_1 ... done Creating redash_redis_1 ... done Creating redash_server_run ... done [2021-10-14 11:14:49,742][PID:1][INFO][alembic.runtime.migration] Context impl PostgresqlImpl. [2021-10-14 11:14:49,743][PID:1][INFO][alembic.runtime.migration] Will assume transactional DDL. [2021-10-14 11:14:49,760][PID:1][INFO][alembic.runtime.migration] Running stamp_revision -> e5c7a4e2df4d
Redashコンテナを起動する。
# docker-compose -p redash -f /opt/redash/docker-compose.yml up -d redash_postgres_1 is up-to-date redash_redis_1 is up-to-date Creating redash_server_1 ... done Creating redash_scheduler_1 ... done Creating redash_adhoc_worker_1 ... done Creating redash_scheduled_worker_1 ... done Creating redash_nginx_1 ... done # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9dc876b47599 redash/nginx:latest "nginx -g 'daemon of…" 38 seconds ago Up 36 seconds 0.0.0.0:80->80/tcp, 443/tcp redash_nginx_1 0ccf0f04956b redash/redash:8.0.0.b32245 "/app/bin/docker-ent…" 40 seconds ago Up 38 seconds 0.0.0.0:5000->5000/tcp redash_server_1 f123d68982f5 redash/redash:8.0.0.b32245 "/app/bin/docker-ent…" 40 seconds ago Up 38 seconds 5000/tcp redash_scheduled_worker_1 8c3be8e35684 redash/redash:8.0.0.b32245 "/app/bin/docker-ent…" 40 seconds ago Up 38 seconds 5000/tcp redash_adhoc_worker_1 937e9baff0e9 redash/redash:8.0.0.b32245 "/app/bin/docker-ent…" 40 seconds ago Up 38 seconds 5000/tcp redash_scheduler_1 7ae8029caad1 postgres:9.6-alpine "docker-entrypoint.s…" About a minute ago Up About a minute 5432/tcp redash_postgres_1 96935d741a4b redis:5.0-alpine "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp redash_redis_1
→ブラウザからhttp://DockerホストのIP
に接続すると、Redashのトップページが表示される。
Redashコンテナの起動・停止手順
以下の手順で起動・停止できる。
・起動
# docker-compose -p redash -f /opt/redash/docker-compose.yml up -d
・停止
# docker-compose -p redash -f /opt/redash/docker-compose.yml down