re:dash on docker on vagrant
タイトル通りで、vagrant上でdockerを動かしてみます。
こちらを参考にdokcer、docker-composeをセットアップします。
re:dashのバージョンによっては./setup/docker/create_database.sh
がいらない(ファイルがそもそも存在しない)みたいです。
その代わり、docker-compose run --rm server create_db
を実行する必要があります。ここを参考にしました。
qiita.com
あとはdocker-compose up -d
を実行してコンテナを起動させます。以下のコマンドを実行して結果が帰ってくれば起動はOKです。
[vagrant@localhost redash]$ curl http://localhost:28080 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>Redirecting...</title> <h1>Redirecting...</h1> <p>You should be redirected automatically to target URL: <a href="/login?next=http%3A%2F%2Flocalhost%3A28080%2F">/login?next=http%3A%2F%2Flocalhost%3A28080%2F</a>. If not click the link.[vagrant@localhost redash]$
コピーするdocker-compose.ymlは今回はdocker-compose.production.yml を使いました。ただ、vagrant上で80ポートをポートフォワーディングしたくなかったので以下のように書き換えました。
[vagrant@localhost redash]$ diff docker-compose.yml docker-compose.production.yml 43c43 < - "28080:80" --- > - "80:80" [vagrant@localhost redash]$
合わせて、Vagrantfileにポートフォワーディングの設定を追加します。
config.vm.network :forwarded_port, host: 28080, guest: 28080
今回の環境は、接続するDBは別のvagrantの仮想マシンです。接続にはプライベートネットワークの設定を行います。vagrantのネットワーク周りの基礎知識と設定はこちらを参考にしました。
config.vm.network "private_network", ip: "192.168.33.10", virtualbox__intnet: "dev_net"
もう一個の仮想マシンも同じ設定(virtualbox__intnet: "dev_net"
)をします。vagrantを再起動して設定を反映させたら再度、docker-compose up -d
を行います。
ホストOS側のブラウザで http://localhost:28080/
を実行するとログイン画面に遷移したら完了です。たまに「Internal Server Error」が発生します。そのときは、dockerサービスを再起動すると直ります。
service docker restart
バージョンによってこの辺は違うようです。ログイン情報を登録するとトップページが表示されます。お疲れ様でした。
プライベートネットワーク設定が完了している場合はデータソースを登録するとき、もう一つの仮想マシンのIPアドレスを指定すれば接続可能です。接続できない場合は、dockerサービスを再起動すると直ったりします。うちの環境は接続先がMySQLなので接続先に192.168.33.%
(仮想マシンのIPアドレス)からの接続を許可する必要があります。
mysql> grant all privileges on [データベース名].* to [ユーザ名]@"192.168.33.%" identified by '[パスワード]' with grant option;