LoginSignup
2
2

More than 3 years have passed since last update.

docker上のredashとローカルのmysqlを連携させる

Last updated at Posted at 2020-03-02

docker上に立てたredashとローカルのmysqlを連携させるのに少し苦労したので方法を残しておこうと思います

  • redashとは

    • OSSで提供されているダッシュボード作成ツール
    • データをredashに連携させる事でコードなどを書かずにデータをグラフ化することができます
  • 今回の目的

    • docker上に立てたredashとMacpcのローカルで起動しているmysqlを連携させる
    • mysqlのデータをredashでグラフ化させる (redash自体の開発は行わない想定です)

git clone
git clone https://github.com/GitSumito/redash-v7.git
*バージョン8が最も最新ですがバグが多く出たため、バージョン7をクローンしています
またdockerのbuild時にエラーが多く発生したためbuild済みのものをクローンしています

環境変数の設定(postgresに認証なしにアクセスできるようにする)
redash.envファイルに
POSTGRES_HOST_AUTH_METHOD=trust
を加筆することでpostgresアクセス時に出てしまうauthのエラーが出なくなりますが用途によって使い分けてください

コンテナの起動
docker-compose run --rm server create_db
dbにddlを流し込む
docker-compose up -d
コンテナを起動
*ログが見たい場合はdocker-compose upでコマンド実行してください

redashへのアクセス
http://localhost指定したportにアクセス
redashの登録画面が表示されたら情報を入力して[Setup]で登録
スクリーンショット 2020-03-01 12.39.41.png

データベースとの連携
Setupが完了すると下記画面に遷移します
S__49840136.jpg

データベース連携に使用するのは真ん中のこの部分です
S__49840135.jpg
*画像には斜線が引いてありますが初期状態では引いていない状態で正しいです

1.Connect a Data Sourceを押下

mysqlをリソースとして指定した画面の後でこのような画面が表示されると思います
ここでHosthost.docker.internalと入力
UserPasswordのところにはmysqlの情報を入力
S__49840138.jpg

保存

[save]ボタンを押下
dashboardに戻り2.Create your first queryを押してデータが連携されていれば完了です

補足

なぜHostがhost.docker.internalのような文字列になるのでしょうか?
それはdockerとMacは友達ですが、dockerとmysqlは友達の友達
つまり、他人なのでdockerから直にmysqlを連携することが出来ないからです

×docker→mysql
○docker→Macポート→mysql

そこで一度Macのポートを経由する必要があります
そこでMacのポートに当たるのがhost.docker.internalです
スクリーンショット 2020-03-01 13.14.45.png

*ちなみにhost.docker.internalはdockerだけが知っているポート、向き先のためMacからアクセスしようとしてもアクセスはできないので下のような画面になってしまいます

S__49840133.jpg

これからもhost.docker.internalに助けられることが多そうです!

誤り等あればコメントお願いします!

おしまい!

2
2
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
2
2