それでは毛玉諸君、これにて失敬

日々の精進を備忘録的に綴ります。

redashを手元で立ち上げてみた感想と反省

手元の環境でredashを立ち上げるまでに苦戦したのでメモ。

$ lsb_release -a
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.5 LTS
Release:    20.04
Codename:   focal

$ docker --version
Docker version 20.10.22, build 3a2c30b

$ docker compose version
Docker Compose version v2.12.2

これを書いている人のスペック

  • 普段はSQLをよく書いている
  • redashはお仕事でバリバリ使ってる
  • 趣味でpythonをちょっと書く
  • それ以外は何も知らない

こちらにセットアップ手順が書かれているので参考にすすめていきます。
実際に自分が行った手順は以下になりますが、カスなので手順どおり行っていない可能性があるのでご了承ください。

redash.io

とりあえずcloneします。

git clone https://github.com/getredash/redash.git
cd redash/

REDASH_COOKIE_SECRETが必要なので、秘密鍵を生成して.envに書き込みます。

python -c 'import secrets; print(secrets.token_hex())' >> .env

データベースを生成する必要があるらしいので、コピペでコマンドを実行していきます。

docker-compose run --rm server create_db
>> ...
>> AttributeError: 'EntryPoints' object has no attribute 'get'

っと、ここでエラーが発生しました。 解決方法はこちらに書いてました。importlib-metadataのバージョンを変えるとよいとのこと。

stackoverflow.com

requirements_bundles.txtを修正します。

## requirements_bundles.txt

# importlib-metadata>=1.6
# を以下に変更
imporlib-metadata==4.13.0

で、再び実行。無事通りました。
ついでにもう一つデータベースを作っています。

# Create tables
docker-compose run --rm server create_db

# Create database for tests
docker-compose run --rm postgres psql -h postgres -U postgres -c "create database tests"

それではサーバーを立ち上げていきます。
docker composeのコマンドを叩くだけです。

docker compose up -d

するとコンテナが5つ立ち上がります。

http://localhost:5000にアクセスしてログインしてみると、エラーメッセージが表示されています。

# こんな感じのエラーメッセージ
FileNotFoundError: [Errno 2] No such file or directory: '/app/redash/settings/../../client/dist/index.html'

これも解決方法が載っており、ホストマシンにnpmパッケージを入れると解決するとのことらしいです。

https://discuss.redash.io/t/filenotfounderror-errno-2-no-such-file-or-directory-app-redash-settings-client-dist-index-html/7490/2discuss.redash.io

# 手元では --legacy-peer-depsがないと弾かれたので追加
sudo npm install --no-optional --legacy-peer-deps
sudo npm run build

その後、コンテナを再起動します。

docker compose build
docker compose up -d

http://localhost:5000にアクセスしてログインしてみると、、、

おおおお〜〜〜無事いつものredash画面が表示されました!!!めでたい!!!

そして反省へ

さて、ここまで来るのに半日くらいかかってしまったのですが、なぜこんなに時間がかかってしまったのか考えてみました。

  • 手順をちゃんと読んでない
    • 何も知らないのに勝手に判断して、必要なコマンドを端折っていた可能性がある
  • エラー文をちゃんと読んでない
    • 何が悪いのか丁寧に書かれているので、ちゃんと読むべき
  • エラー発生→ググる→解決方法試す→エラー発生→ググる→…を繰り返すことで問題の本質から離れていく
    • 頭がバグってくるとこの状況に陥りやすい
    • 課題はなにか、解決する手段はどれがあるか、試した結果どうだったか、を逐一確認しながら進めるべき

全く知らない技術に触れるとき、うまくいかない部分って必ずあると思います。どんなつよつよでも。
うまくいかない時にどう立ち回るか、がつよつよと凡夫の差かなと思います。
特に自分はドキュメントを流し読みするクセがありますが、多分英語を読むことで感じるストレスが大きいことが原因かなと思いました。伸びしろですねぇ
とりあえず動かせたのでよかったです。

追記(2024.01.18)

間違ってローカルのリポジトリを消してしまったので再度設定しました。

git clone git@github.com:getredash/redash.git
vim .env # 

docker compose build --no-cache

# fish ターミナルでは nvm が使えないので代わりに以下を導入
curl -fsSL https://fnm.vercel.app/install | bash
fnm install 16
fnm use 16
yarn --frozen-lockfile

docker compose run --rm server create_db
yarn build
docker compose up
# --> port 5001 にアクセス