ただふれたものについて書くブログ

あんまり正しくない話を適当に書くブログ

いつの間にかre:dashの設定が簡単になってた(Dockerを使えば)

v0.8.2-rc の頃に一回入れたことがあったのだけど 当時は中途半端だったDockerサポートがきちんと整備されていて使えるようになっていた。

http://docs.redash.io/en/latest/setup.html#docker-compose

要は、postgres イメージと Dockerイメージがあれば動きますよって話。

https://github.com/getredash/redash/blob/master/Dockerfile にあるので、 まずは自分の手元でDockerイメージを作成する。

$ git clone git@github.com:getredash/redash.git
$ cd redash
$ docker build -t redash .

docker-compose.yml もサンプルもredashのリポジトリに入っているので、それを使えばひとまずお試しができる https://github.com/getredash/redash/blob/master/docker-compose-example.ym

$ mv docker-compose-example.yml docker-compose.yml

docker-compose-example.yml の中身はこれ。

redash:
  image: redash/redash:latest
  ports:
    - "5000:5000"
  links:
    - redis
    - postgres
  environment:
    REDASH_STATIC_ASSETS_PATH: "../rd_ui/dist/"
    REDASH_LOG_LEVEL: "INFO"
    REDASH_REDIS_URL: "redis://redis:6379/0"
    REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
    REDASH_COOKIE_SECRET: veryverysecret
redis:
  image: redis:2.8
postgres:
  image: postgres:9.3
  volumes:
    - /opt/postgres-data:/var/lib/postgresql/data
redash-nginx:
  image: redash/nginx:latest
  ports:
    - "80:80"
  links:
    - redash

ただし、アカウントの登録などの初期化処理が setup/docker/create_database.sh にまとめられている*1ので そちら経由でdocker-compose upを行う。

$ setup/docker/create_database.sh

初期化が終わったあといくつかのコンテナが抜けているのであらためて docker-compose up を実行。 2回目以降は普通に docker-compose up が使える。

f:id:taizo_onexone:20160702120722p:plain

dockerの動いている環境にポート80でアクセスすれば、Re:dashが試せる。 (アカウントの初期値は admin/admin。create_database.sh に書いてある )

環境変数について

環境変数はドキュメントの記載があまりないので、コードを直接見るほうが早い。 自分がさわったやつ。

変数名 説明
REDASH_STATIC_ASSETS_PATH assetsのpath
REDASH_LOG_LEVEL ログレベル
REDASH_REDIS_URL redis の向き先
REDASH_DATABASE_URL postgres の向き先
REDASH_COOKIE_SECRET cookieのsecret
REDASH_GOOGLE_CLIENT_ID google OAuth を使うときのclient id
REDASH_GOOGLE_CLIENT_SECRET google OAuth を使うときのclient secret
REDASH_GOOGLE_APPS_DOMAIN google OAuthでログインを特定のドメインのみにしたい時に使う
REDASH_ALLOW_SCRIPTS_IN_USER_INPUT クエリーの説明部分でフォームを設定したい場合に入れる

自分らが実際に利用する環境を用意する場合は、nginxとredash だけ docker化して、 redisとpostgres の向き先だけ別のものにしている。 後はGoogle OAuth でログインすると権限管理が楽なのでREDASH_GOOGLE_* を設定している。 REDASH_ALLOW_SCRIPTS_IN_USER_INPUT は便利そうなのでいれてる。

注意

上はgithubから直接落としてきたけれど、Docker Hubにあるタグがついているイメージを使ったほうが良いと思う。

https://hub.docker.com/r/redash/redash/tags/

参考