Raspberry Pi4 8GBモデルでRedashを動かす事が出来たので、備忘録として残します。
1、用意するもの
・Raspberry Pi4 8GBモデル
※Redashはメモリ消費量が多いので、必ず8GBモデルを購入してください。
・ファン付きケース
・microSD(32GB以上)
・電源・そのほか起動時に必要なもの
2、OSの準備など
以下の記事を参考に、OSのセットアップを実行します。(3-2を参照)
3、redash設定・起動
3-1、パッケージインストール・ディレクトリ作成
任意のディレクトリに移動して、以下のコマンドを実行します。
sudo apt install pwgen
REDASH_BASE_PATH=./redash_docker
sudo mkdir -p $REDASH_BASE_PATH
sudo chown $USER:$USER $REDASH_BASE_PATH
mkdir $REDASH_BASE_PATH/postgres-data
touch $REDASH_BASE_PATH/env
3-2、各種パラメータの生成
以下のコマンドを実行して、必要なパラメータを生成します。
COOKIE_SECRET=$(pwgen -1s 32)
SECRET_KEY=$(pwgen -1s 32)
POSTGRES_PASSWORD=$(pwgen -1s 32)
REDASH_DATABASE_URL="postgresql://postgres:${POSTGRES_PASSWORD}@postgres/postgres"
3-3、ファイルへの書き出し
以下のコマンドを実行して「env」ファイルへ設定を書き出します。
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
3-4、docker-composeの生成
以下のコマンドを実行してdocker-compose.ymlファイルを作成します。
cd $REDASH_BASE_PATH
cat <<'EOF' > docker-compose.yml
version: '2'
x-redash-service: &redash-service
image: public.ecr.aws/q4i3f9f7/redash:8.0.0
depends_on:
- postgres
- redis
env_file: ./env
restart: always
services:
server:
<<: *redash-service
command: server
ports:
- "5000:5000"
environment:
REDASH_WEB_WORKERS: 4
GUNICORN_CMD_ARGS: "-k gevent"
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.5-alpine
env_file: ./env
volumes:
- ./postgres-data:/var/lib/postgresql/data
restart: always
EOF
3-5、Redashの起動
以下のコマンドを実行して、DBの作成・Redashの起動を行います。
sudo docker-compose run --rm server create_db
sudo docker-compose up -d
3-6、ページへのアクセス
Webブラウザーで以下のURLにアクセスします。
http://<Raspberry PiのIPアドレス>:5000/
4、余談など
4-1、ECRパブリックリポジトリの使用
今回はEC2で作成したDockerイメージを共有するために、ECRを使用しています。
詳しい利用方法については以下を参照いただければと思います。
ECRをパブリックレジストリとして利用可能になりました! #reinvent
4-2、Dockerイメージの作成
当初、DockerイメージをRaspberry Pi4で作成しようとしていましたが、正常にビルドできなかったため、EC2のt4g.mediumインスタンスを用いてビルドしています。
その際のコマンドは以下になります。
4-2-1、ECR認証情報設定
aws configure
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/xxxxxxxx
4-2-2、Baseイメージダウンロード
git clone https://github.com/getredash/docker.git
4-2-3、Base_Dockerイメージ作成・確認
docker build -t redash/base:debian ./docker/base/debian/.
docker images
4-2-4、Redashダウンロード
git clone https://github.com/getredash/redash.git -b v8.0.0
4-2-5、コンポーネントの削除
以下のコンポーネントを削除せずにビルドを行うとエラーが発生し、ビルドが中断しました。恐らく、Arm版のパッケージではなくx86版のパッケージが読み込まれることが原因と思われます。
その為、エラーの発生原因となるコンポーネントを調査し、ビルド時に読み込まれないよう、設定ファイルから記述を削除しています。
除外したコンポーネントを使用したクエリは実行できないと思われます。除外したことによる影響は未検証です。
sed -i -e '/^ibm-db/d' ./redash/requirements_all_ds.txt
sed -i -e '/^pymssql/d' ./redash/requirements_all_ds.txt
sed -i -e '/^pymapd/d' ./redash/requirements_all_ds.txt
sed -i -e '/^azure-kusto-data/d' ./redash/requirements_all_ds.txt
4-2-6、Redash_Dockerイメージ作成・確認
docker build -t redash ./redash/.
docker images
4-2-7、ECRへプッシュ
「public.ecr.aws/xxxxxxxx/」の部分はECRで払い出された値を使用します。
docker tag redash:latest public.ecr.aws/xxxxxxxx/redash:8.0.0
docker push public.ecr.aws/xxxxxxxx/redash:8.0.0