暫定設定
よくわからなかったのでこうしていた
- システム用のコンテナがある(httpd)
- MySQL用のコンテナがある(mysqld)
- 2つを普通に
docker start
する - コンテナにはそれぞれ
172.17.0.2
(httpd)、172.17.0.3
(mysqld)が割り振られる - httpd側から
mysql -h 172.17.0.3
とすれば一応通信はできる
問題点
- しかし、mysqldのコンテナを
docker restart
したりすると172.17.0.4
になってしまい、httpd側からの接続設定が無効になってしまう - また、VPSが再起動してしまった際などにhttpdとmysqldが
.2
と.3
の順番になる保証がない - ぐぐってもコレといったセオリーはなさそう・・・
新しい設定
まだよくわからないけど、とりあえずこうすることにした
ホスト
IPアドレスを確認
(dockerのホストは常に172.17.42.1
になる模様)
$ ifconfig
docker0 Link encap:Ethernet HWaddr AE:BF:F3:9F:68:23
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::cc:60ff:fee0:d23f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13496 errors:0 dropped:0 overruns:0 frame:0
TX packets:27855 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:645599 (630.4 KiB) TX bytes:35548124 (33.9 MiB)
eth0
...
システム用コンテナ(httpd)
$ sudo docker run -p 49164:80 -d --name httpd me/centos6_php
$ sudo docker inspect -format="{{ .NetworkSettings.IPAddress }}" httpd
172.17.0.2
MySQL用コンテナ(mysqld)
$ sudo docker run -p 49176:3306 -d --name mysqld me/centos6_php```
$ sudo docker inspect -format="{{ .NetworkSettings.IPAddress }}" mysqld
172.17.0.3
$ mysql -u root -p -e 'GRANT ALL ON *.* to "root"@"172.%";'
システム(httpd側)から接続確認
$ php -r 'new PDO("mysql:host=172.17.42.1;port=49176;dbname=system_dev","root","");'
エラーが出なければOK
めでたしめでたし
自動起動設定
ついでなので、VPSが再起動してもサービスが止まらないように設定
ホスト
dockerの自動起動設定
$ sudo yum install -y supervisor
$ ...(設定省略)
$ cat /etc/supervisord/conf/service.conf
[supervisord]
nodaemon=false
[program:docker_httpd]
command=/usr/bin/docker start -a httpd
autostart=true
autorestart=false
[program:docker_mysqld]
command=/usr/bin/docker start -a mysqld
autostart=true
autorestart=false
nginxの設定
関係ないけどnginx設定もメモ
$ cat /etc/nginx/conf.d/virtual.conf
server {
listen 80;
server_name dev.mysystem.jp;
location / {
proxy_pass http://127.0.0.1:49164;
}
}
おわり
これで、動的な設定変更に影響されずにサービスを自動的に再稼働できるはず