dbサーバーのIPアドレスを調べる
$ sudo docker inspect <コンテナID or 名前> | grep IPAddress
"IPAddress": "172.17.0.8",
こんな感じで起動したdockerのIPが分かる。
Webサーバーとかから普段使いするユーザーを作成しておく。念のため調べたIPでちゃんとアクセスできるかも検証。
$ mysql -uroot -p -h172.17.0.8
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
(中略)
mysql> GRANT SELECT , INSERT , UPDATE , DELETE ON *.* TO <ユーザー名> IDENTIFIED BY '<パスワード>';
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
新しく作ったユーザーで入れるかテスト
$ mysql -u<ユーザー> -p<パスワード> -h172.17.0.8
Welcome to the MySQL monitor. Commands end with ; or \g.
(中略)
mysql>
おっけー。
ウェブサーバーを用意する。
Webサーバーをイメージから実行。ここは適当に用意ください。(また書くかも)
docker webは80でWeb公開しているのをホスト側8000へ転送。
$ sudo docker run -it --name web -p 8000:80 tsutorm/web /bin/bash
あとは、webサーバー内の設定でDBを見に行くようにすればおっけー。
ホスト側のhttpdともポートがかぶってないので、適当にリバースプロキシすれば外部公開も完了します。
コンテナ間のtcp接続はinspectででてくるプライベートIPアドレス間で通信可能っぽい。コンテナ間のリンクは docker link でやるのが筋だとは思うが、初学者には敷居が高い気がする。わからんので、わかるまではtcpベースでいいと思う。
ちなみにログとかの永続化の考慮は全然できていない。
fluentdとか使ってログ収集するとかっこいいきがする。