32
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS EC2にdockerベースのredashを一から設定して起動するまで

Last updated at Posted at 2017-05-30

スクリーンショット 2017-05-31 0.22.43.png

オープンソースのDashboardツールredash。
postgresからAWS redshiftなど各種DB/DWHの情報をビジュアライズできるツール。
最近ではAirbnb社が開発したsupersetも注目されてますが、流行りのredashをインストールしてみた。

AWS EC2にdockerベースのredashを一から設定して起動するまでのセットアップメモ。

ポイントは以下

  • redash、postgresql、nginx、redisで構成
  • 全部公式のdockerイメージがある
  • docker-composeで簡単一括実行
  • 諸々のソースはredash公式のGit Hubリポジトリに公開されている。

※nginxはwebサーバ、postgreはクエリの実行結果やデータの保存、redisはタスクキューに使用するらしい。

###1) EC2に最低限必要なツールをセットアップ
※amazon linux t2microインスタンスを利用

最初のおまじないと、docker & gitインストール

sudo yum update -y
sudo yum install -y docker git

sudo権限なしでdockerコマンドを使えるようにする

sudo usermod -a -G docker ec2-user
exit #一旦ログオフし再接続が必要

docker-composeインストール
※yum install docker-composeとかできると見せかけてできない

※最新バージョンは下記で確認。1.11.2の部分を適宜書き換える。
https://github.com/docker/compose/releases

sudo curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

###2) Git Hubからredash一式をgit close

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

###3) redashのdocker-compose.ymlを編集

cloneしたredash/docker-compose.ymlを編集する。
もともとのdocker-compose.ymlはプロダクション利用には不向きの設定らしく、redash/docker-compose.production.ymlをコピーし、編集する。
編集ポイントは、postgresqlのvolumeとpassword関連。デフォルトではコメントアウトまたは何も記載がない。

docker-compose.yml

# This is an example configuration for Docker Compose. Make sure to atleast update
# the cookie secret & postgres database password.
#
# Some other recommendations:
# 1. To persist Postgres data, assign it a volume host location.
# 2. Split the worker service to adhoc workers and scheduled queries workers.
version: '2'
services:
  server:
    image: redash/redash:latest
    command: server
    depends_on:
      - postgres
      - redis
    ports:
      - "5000:5000"
    environment:
      PYTHONUNBUFFERED: 0
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
      REDASH_COOKIE_SECRET: veryverysecret
  worker:
    image: redash/redash:latest
    command: scheduler
    environment:
      PYTHONUNBUFFERED: 0
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
      QUEUES: "queries,scheduled_queries,celery"
      WORKERS_COUNT: 2
  redis:
    image: redis:3.0-alpine
  postgres:
    image: postgres:9.5.6-alpine
    volumes:  #コメントアウトを取る
      - /home/ec2-user/postgres-data:/var/lib/postgresql/data
    environment: #追加する
      - POSTGRES_USER:'test'
      - POSTGRES_PASSWORD:'pwd'
      - POSTGRES_DB:'mydb'
  nginx:
    image: redash/nginx:latest
    ports:
      - "80:80"
    depends_on:
      - server
    links:
      - server:redash

postgresのデータは永続化するためホストにvolumeマウントする。
上記設定に応じてホスト側にマウントパスディレクトリを作成しておく。

sudo mkdir -p /home/ec2-user/postgres-data

###4) docker-composeでredash(及び関連ツール)起動

docker-compose run --rm server create_db

データベースの初期化

docker-compose up

redash起動
バックグラウンド実行は -d オプションを追加

###5) ブラウザで確認

EC2側で設定したパブリックIP宛にブラウザで起動すると、Redisログインページが表示される。
※EC2のSG等で80番のインバウンドが許可されていること。

###6) CLIでユーザ追加

通常はコンソールからユーザ追加可能だが、メール連携による認証フローが必要。
閉域環境利用など手順を簡略化したい場合は、CLIで追加可能

manage.py users create [メールアドレス(適当)] "[ユーザ名]"

参考)
http://qiita.com/wizpra-koyasu/items/aa8b3fc069816d91ae05

#最新版状況
2019/7時点

・v7.0.0が出た
・docker-compose.production.yamlがなくなっており、redash/setup/docker-compose.yamlを使う
・Utuntu18.04用のセットアップスクリプトが提供されており、構築がもっと簡単に

32
22
1

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
32
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?