M1チップ搭載のMacbookでRedash Dockerコンテナを起動する
- 2022.09.01
- ビジュアライゼーション
開発しているサービスで、KPIをモニタリングするためにオープンソースBIのRedashを導入しようという話になりました。
そこで、まずは試しにローカルにRedashサーバーを構築してみることにしました。
Redash用のDockerイメージがあるので簡単に構築できるかと思いましたが、意外とM1チップ搭載のMacbookだとドキュメント通りにいかなかったのでメモします。
環境
- MacBook Air (M1, 2020)
- brewインストール済
- Docker for Mac/docker-composeインストール済
Node.jsをインストールする
※nvmをインストール済でnode versionが14.xの方はスキップしてOKです。
ローカルでRedashを操作するためにはNode.jsが必要です。
ただし、LatestバージョンのNode.jsでパッケージをインストールしようとするとM1チップ搭載のMacではエラーが起きるため、Redashと互換性があるNode.jsのバージョン(14.x)をインストールします。
まずはNode.jsのバージョン管理ツールであるnvm(Pythonでいうpyenv)をインストールします。
こちらで紹介されている手順通りでOKです。
nvmをインストール後、バージョン14.18.2をインストールします。
nvm install 14.18.2
以下が表示されればOKです。
node -v
v16.14.2
RedashのDockerコンテナを起動する
こちらのGitHubリポジトリからRedashのDockerコンテナを作ります。
ただし、Apple M1チップ搭載のMacでDockerイメージをビルドする際は注意が必要です。
こちらで議論されている通り、現在はARM64アーキテクチャをサポートしていないのでmasterブランチのDockerfileをビルドしてもエラーになります。
有志の方がM1チップ搭載のMacでも動作するようにPRを出してくれているので、そのブランチのDockerfileでビルドすることにします。
# リポジトリをローカルにクローンする
git clone https://github.com/getredash/redash.git
cd redash/
# masterではなくfix-m1-buildブランチを使用する
git checkout fix-m1-build
また、MacOS Montereyだとport5000がシステムで既に使われているので、docker-compose.ymlでフォワード先のホストのportを変更します。
docker-compose.ymlの一部抜粋
services:
server:
<<: *redash-service
command: dev_server
depends_on:
- postgres
- redis
ports:
- "5001:5000"
- "5678:5678"
あとは公式ドキュメント通りに実行すればOKです。
# コンテナの起動
# 初回はイメージをビルドするため結構時間がかかる
docker-compose up -d
# install node packages
yarn --frozen-lockfile
# Create tables
docker-compose run --rm server create_db
# build frontend aset
yarn build
注意
docker-compose down(コンテナを削除)すると再度create_dbが必要になります。
あくまでもdev用の設定のため、データの永続化まで考慮されていません。
データを消したくない場合はdocker-compose stop/startしましょう。
もし本番運用したい場合は別途PostgreSQLを用意し、環境変数REDASH_DATABASE_URLでそのDBを参照するようにしましょう。
Self hosted Redash with data persistance
- 前の記事
RedShiftのGEOMETRY型を使って緯度経度から都道府県を判定してみる 2022.08.22
- 次の記事
記事がありません