LoginSignup
22
22

More than 5 years have passed since last update.

DockerでWebサーバー/コンテナホストからDBサーバー接続

Posted at

前回の続き

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)

新しく作ったユーザーで入れるかテスト
shell-session
$ 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とか使ってログ収集するとかっこいいきがする。

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