前回から続きをやっていきます
前回はPHPとMySQLの連携を行うため、手順の一つ目としてDockerfileによるPHPイメージのカスタマイズをしました
今回は手順の2つ目としてMySQLイメージの設定変更をしていきます
・MySQLイメージの設定を変更する
MySQLイメージがあるか確認
[root@dev381 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php custom 25565093dc47 17 hours ago 388.6 MB
docker.io/php 5.6-apache 2d4c03fc6240 6 days ago 376.8 MB
docker.io/mysql 5.7 e799c7f9ae9c 4 weeks ago 407.3 MB
docker.io/centos centos6 30365b2e827c 9 weeks ago 194.7 MB
作成しているコンテナがあったら削除しておく
[root@dev381 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@dev381 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d745badfd3f 2d4c03fc6240 “/bin/sh -c ‘apt-get ” 17 hours ago Exited (1) 17 hours ago romantic_northcutt
[root@dev381 ~]# docker rm -f 4d745badfd3f
4d745badfd3f
[root@dev381 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Docker HubのMySQLイメージはcharacter setがlatin1になっている部分があるので設定ファイルを追加
/docker/mysql/custom.cnf (場所とファイル名は任意です)を以下の内容で作成します。
[mysqld] character-set-server=utf8
[root@dev381 ~]# mkdir /docker/mysql
[root@dev381 ~]# vi /docker/mysql/custom.cnf
この設定ファイルを読み込んでMySQLコンテナを起動
docker run --name mysql -v /docker/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=pass -d mysql:5.7
-v
オプションでホスト側の /docker/mysql ディレクトリとコンテナ側の /etc/mysql/conf.d ディレクトリを結びつけています。
MySQLコンテナの設定ファイルは /etc/mysql/my.cnf ですが、その中で /etc/mysql/conf.d にある設定ファイルをすべて読み込むようになっているので、作成した custom.cnf が読み込まれる仕組みです。
[root@dev381 ~]# docker run –name mysql -v /docker/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=自分で設定 -d mysql:5.7
3ae6a9f605ce8819a9f4e0da67303426b8a7fe164a53a162cdc89ecdcc0ab453
[root@dev381 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3ae6a9f605ce mysql:5.7 “docker-entrypoint.sh” 44 seconds ago Up 42 seconds 3306/tcp mysql
・PHPコンテナをMySQLコンテナとリンクして起動する
いよいよPHPコンテナとMySQLコンテナを連携します。
docker run -p 80:80 -v /docker/www:/var/www/html --link mysql:mysql --name php -d php:custom
--link
オプションでコンテナmysqlを連携します。コロンの右側で連携する名前を指定します。
[root@dev381 ~]# docker run -p 80:80 -v /docker/www:/var/www/html –link mysql:mysql –name php -d php:custom
fc6ff76aea10ef3a13df5221bebbe62fe12069d8442af7129b4e1cbdbb4c3e3d
連携が取れているか確認してみましょう。
docker exec -ti php bash
でPHPコンテナに入り、envコマンドや /etc/hosts を開きMySQLコンテナの情報が入っているか確認します。
[root@dev381 ~]# docker exec -ti php bash
root@fc6ff76aea10:/var/www/html# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 mysql 3ae6a9f605ce
172.17.0.3 fc6ff76aea10
このように先ほど--link
で指定した名前でホスト名にアクセスできます。
root@fc6ff76aea10:/var/www/html# [root@dev381 ~]#
終わったらコンテナから抜けておく(Ctr + P,Ctr + Q)
以上でPHPとMySQLの連携は完了です
次回はphpMyAdminを導入してみます
コメント