はじめに
Rails開発において、データの可視化や分析は重要な要素です。今回は、既存のRails開発環境にRedashを導入し、データ可視化環境を構築する方法をご紹介します。
前提条件
- Docker、Docker Composeが導入済み
- 既存のRails開発環境がDocker Composeで構築済み
- MySQL、Redisを使用した構成
構成概要
今回構築する環境は以下の通りです:
既存サービス
- Rails アプリケーション (ポート3000)
- MySQL (ポート3306) - メインデータベース
- Redis (ポート6379) - Rails用
新規追加サービス
- Redash サーバー (ポート5001)
- PostgreSQL (ポート5433) - Redash専用
- Redis (ポート6380) - Redash専用
- Redash スケジューラー
- Redash ワーカー
実装手順
1. docker-compose.ymlの更新
既存のdocker-compose.ymlに以下のサービスを追加します:
# Redash サーバー
redash:
image: redash/redash:8.0.0.b32245
command: server
depends_on:
- postgres_redash
- redis_redash
ports:
- "5001:5000"
environment:
PYTHONUNBUFFERED: 0
REDASH_LOG_LEVEL: "INFO"
REDASH_REDIS_URL: "redis://redis_redash:6379/0"
REDASH_DATABASE_URL: "postgresql://postgres:password@postgres_redash/redash"
REDASH_COOKIE_SECRET: "redash-secret-key-change-this-in-production"
REDASH_SECRET_KEY: "redash-secret-key-change-this-in-production"
REDASH_WEB_WORKERS: 4
volumes:
- redash_data:/app
# Redash専用 PostgreSQL
postgres_redash:
image: postgres:14
environment:
POSTGRES_DB: redash
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
volumes:
- postgres_redash_data:/var/lib/postgresql/data
ports:
- "5433:5432"
# Redash専用 Redis
redis_redash:
image: redis:7-alpine
ports:
- "6380:6379"
# Redash スケジューラー
redash_scheduler:
image: redash/redash:8.0.0.b32245
command: scheduler
depends_on:
- postgres_redash
- redis_redash
environment:
PYTHONUNBUFFERED: 0
REDASH_LOG_LEVEL: "INFO"
REDASH_REDIS_URL: "redis://redis_redash:6379/0"
REDASH_DATABASE_URL: "postgresql://postgres:password@postgres_redash/redash"
REDASH_COOKIE_SECRET: "redash-secret-key-change-this-in-production"
REDASH_SECRET_KEY: "redash-secret-key-change-this-in-production"
# Redash ワーカー
redash_worker:
image: redash/redash:8.0.0.b32245
command: worker
depends_on:
- postgres_redash
- redis_redash
environment:
PYTHONUNBUFFERED: 0
REDASH_LOG_LEVEL: "INFO"
REDASH_REDIS_URL: "redis://redis_redash:6379/0"
REDASH_DATABASE_URL: "postgresql://postgres:password@postgres_redash/redash"
REDASH_COOKIE_SECRET: "redash-secret-key-change-this-in-production"
REDASH_SECRET_KEY: "redash-secret-key-change-this-in-production"
QUEUES: "queries,scheduled_queries,celery,schemas"
また、volumesセクションに以下を追加:
volumes:
# 既存のボリューム...
postgres_redash_data:
redash_data:
2. 初期設定スクリプトの作成
Redashの初期設定を自動化するため、setup_redash.sh
を作成します:
#!/bin/bash
# Redash 初期設定スクリプト
echo "=== Redash 初期設定を開始します ==="
# 1. Docker Composeでサービスを起動
echo "1. Docker Composeサービスを起動中..."
docker compose up -d postgres_redash redis_redash
# 少し待機
echo "データベースの起動を待機中..."
sleep 30
# 2. Redashデータベースの初期化
echo "2. Redashデータベースを初期化中..."
docker compose run --rm redash create_db
# 3. 管理者ユーザーを作成
echo "3. 管理者ユーザーを作成します..."
echo "管理者ユーザー情報:"
echo " - 名前: Admin User"
echo " - メール: admin@example.com"
echo " - パスワード: password123"
echo ""
# 管理者ユーザーの作成
docker compose run --rm redash manage users create_root admin@example.com "Admin User" --password password123
# 4. 全サービスを起動
echo "4. 全サービスを起動中..."
docker compose up -d
echo ""
echo "=== Redash 初期設定が完了しました ==="
echo ""
echo "アクセス情報:"
echo " - Redash URL: http://localhost:5001"
echo " - 管理者メール: admin@example.com"
echo " - 管理者パスワード: password123"
echo ""
echo "Rails アプリケーション URL: http://localhost:3000"
echo ""
echo "次のステップ:"
echo "1. http://localhost:5001 にアクセス"
echo "2. 管理者でログイン"
echo "3. データソースの設定"
echo ""
3. 初期設定の実行
スクリプトに実行権限を付与し、実行します:
chmod +x setup_redash.sh
./setup_redash.sh
使用方法
1. Redashへのアクセス
初期設定完了後、以下のURLでRedashにアクセスできます:
- URL: http://localhost:5001
- 管理者メール: admin@example.com
- 管理者パスワード: password123
2. データソースの設定
Redashにログイン後、以下の手順でMySQLデータソースを設定します:
- Settings → Data Sources → New Data Source
- MySQL を選択
- 接続情報を入力:
- Host: db
- Port: 3306
- Database: your_database_name
- Username: rails
- Password: password
3. 日常の開発フロー
# 全サービス起動
docker compose up -d
# Rails アプリケーション: http://localhost:3000
# Redash: http://localhost:5001
# 停止
docker compose down
ポイント
セキュリティ対策
- 本番環境では、必ず環境変数やシークレット管理ツールを使用
- デフォルトパスワードの変更を忘れずに
- 適切なファイアウォール設定を実施
ポートの競合回避
既存サービスと競合しないよう、以下のポートを使用:
- Redash: 5001 (デフォルト5000から変更)
- PostgreSQL: 5433 (デフォルト5432から変更)
- Redis: 6380 (デフォルト6379から変更)
パフォーマンス最適化
-
REDASH_WEB_WORKERS: 4
でワーカー数を調整 - 必要に応じてRedisとPostgreSQLのメモリ設定を調整
トラブルシューティング
よくある問題と対処法
-
Redashが起動しない
- PostgreSQLとRedisの起動を確認
- ログを確認:
docker compose logs redash
-
データベース接続エラー
- 接続情報(ホスト名、ポート、認証情報)を確認
- Dockerネットワーク内では、サービス名をホスト名として使用
-
管理者ユーザーでログインできない
- 初期設定スクリプトが正常に完了しているか確認
- 必要に応じて手動でユーザー作成を実行
まとめ
Docker Composeを使用することで、Rails開発環境に簡単にRedashを導入できました。この構成により、開発チーム全体でデータの可視化と分析が可能になり、データドリブンな開発が促進されます。
本番環境への適用時は、セキュリティ設定やパフォーマンス調整を適切に行ってください。