0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker ComposeでRails開発環境にRedashを導入する方法

Posted at

はじめに

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にアクセスできます:

2. データソースの設定

Redashにログイン後、以下の手順でMySQLデータソースを設定します:

  1. Settings → Data Sources → New Data Source
  2. MySQL を選択
  3. 接続情報を入力:
    • 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のメモリ設定を調整

トラブルシューティング

よくある問題と対処法

  1. Redashが起動しない

    • PostgreSQLとRedisの起動を確認
    • ログを確認: docker compose logs redash
  2. データベース接続エラー

    • 接続情報(ホスト名、ポート、認証情報)を確認
    • Dockerネットワーク内では、サービス名をホスト名として使用
  3. 管理者ユーザーでログインできない

    • 初期設定スクリプトが正常に完了しているか確認
    • 必要に応じて手動でユーザー作成を実行

まとめ

Docker Composeを使用することで、Rails開発環境に簡単にRedashを導入できました。この構成により、開発チーム全体でデータの可視化と分析が可能になり、データドリブンな開発が促進されます。

本番環境への適用時は、セキュリティ設定やパフォーマンス調整を適切に行ってください。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?