getredash/redashがローカル環境でError code 139と出て起動しなくなっていたので取り敢えず暫定復旧させてみた

Redashがローカル環境のDockerで起動しなくなっており、公式リポジトリのIssueを参考に個人環境に依存した問題ではないことを確認しつつ、docker-compose.ymlに変更をいれて復旧してみました。
2021.10.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

MacbookPro上でRedashのデモンストレーション準備をToDoとし、Dockerにて試してみたところ以下のエラーがでて全く立ち上がらない状態となりました。

redash_server_1 exited with code 139

以前は問題なく立ち上がっていたため、なにか環境へ不用意な変更を入れてしまったかと確認してみてもDocker Desktopのバージョンが多数上がっていた程度。

念の為Issueを確認してみたところ、個人の環境に依存したものではありませんでした。

Issue自体はCloseとなっていますが、まだfixはされていません。暫定とはいえ立ち上げることが出来たため、具体的な対処方法について書いてみました。

対処方法

getredash/redashのdocker-compose.yml内に環境変数を指定します。

 x-redash-environment: &redash-environment
   REDASH_LOG_LEVEL: "INFO"
   REDASH_REDIS_URL: "redis://redis:6379/0"
   REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
   REDASH_RATELIMIT_ENABLED: "false"
   REDASH_MAIL_DEFAULT_SENDER: "redash@example.com"
   REDASH_MAIL_SERVER: "email"
   REDASH_ENFORCE_CSRF: "true"
+  REDASH_ENABLED_QUERY_RUNNERS: "redash.query_runner.mysql,redash.query_runner.pg"

あとは通常通り起動させるだけです。起動後は0.0.0.0:5000を開きます。

cd redash/
docker-compose -f docker-compose.yml run --rm server create_db
docker-compose up -d 

見栄えはおいておくとして、アクセスできました。

なお、Issue末尾にあったdocker-compose.ymlでも以下のコマンドで起動確認済みです。

docker-compose up -d
docker-compose -f docker-compose.yml run --rm redash create_db

あとがき

REDASH_ENABLED_QUERY_RUNNERS に直接redash.query_runner.mysqlredash.query_runner.pgを設定することで有効になる辺り、default_query_runnersの初めに来るクラウド環境用設定による問題の可能性があります。非常に検証し辛いところです。

default_query_runners = [
    "redash.query_runner.athena",
    "redash.query_runner.big_query",
    "redash.query_runner.google_spreadsheets",
    "redash.query_runner.graphite",
    "redash.query_runner.mongodb",
    "redash.query_runner.couchbase",
    "redash.query_runner.mysql",
    "redash.query_runner.pg",

redash/__init__.py at master · getredash/redash · GitHub - https://github.com/

enabled_query_runners = array_from_string(
    os.environ.get("REDASH_ENABLED_QUERY_RUNNERS", ",".join(default_query_runners))
)

redash/__init__.py at master · getredash/redash · GitHub - https://github.com/

Issueに対してPRがないままCloseされているのが気がかりなのですが、取り急ぎ立てたい人はこの記事のdocker-compose.ymlを参考にしてみてください。