前提
- Docker Toolbox がインストールされていること
- Docker version 1.11.1
- MySQL、PHPの各コンテナを立ち上げるところまで
- pdo_mysqlは導入していないので、PHPからMySQLに接続できない
Docker Machine を作成する
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
まずは Docker Mashine が起動していないことを確認
$ docker-machine create --driver virtualbox <マシーン名>
Creating CA: /<ディレクトリ>/.docker/machine/certs/ca.pem
Creating client certificate: /<ディレクトリ>/.docker/machine/certs/cert.pem
...省略
<マシーン名>は、以降「mydoc」とする
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
mydoc - virtualbox Running tcp://xxx.xxx.xx.xxx:xxxx v1.11.2
Docker Machine をストップする
$ docker-machine stop mydoc
Stopping "mydoc"...
Machine "mydoc" was stopped.
mydoc を指定しないとデフォルト(default)を設定となるので、エラーが出る
「Error: No machine name(s) specified and no "default" machine exists.」
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
Docker Machine をスタートする
$ docker-machine start mydoc
Starting "mydoc"...
...省略
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
$ docker-machine env mydoc
set -gx DOCKER_TLS_VERIFY "1";
set -gx DOCKER_HOST "tcp://xxx.xxx.xx.xxx:xxxx";
set -gx DOCKER_CERT_PATH "/<ディレクトリ>/.docker/machine/machines/mydoc";
set -gx DOCKER_MACHINE_NAME "mydoc";
# Run this command to configure your shell:
# eval (docker-machine env mydoc)
環境変数の設定
立ち上げのみであれば、下記のコマンドを打てば良い
ターミナル立ち上げる度に必要になるので、「.bash_profile」 に記載した方が良い
$ set -gx DOCKER_TLS_VERIFY "1";
$ set -gx DOCKER_HOST "tcp://xxx.xxx.xx.xxx:xxxx";
$ set -gx DOCKER_CERT_PATH "/<ディレクトリ>/.docker/machine/machines/mydoc";
$ set -gx DOCKER_MACHINE_NAME "mydoc";
set コマンドの設定が反映されているかを確認
$ env
DOCKER_TLS_VERIFY "1";
DOCKER_HOST "tcp://xxx.xxx.xx.xxx:xxxx";
DOCKER_CERT_PATH "/<ディレクトリ>/.docker/machine/machines/mydoc";
DOCKER_MACHINE_NAME "mydoc";
MySQL のコンテナを立ち上げる
公式サイトから、イメージ名を確認
(今回はMySQLの「5.7」にしました)
$ docker run --name <MySQLのコンテナ名> -e MYSQL_ROOT_PASSWORD=<ルートのパスワード> -d <イメージ名>:<タグ名>
Unable to find image 'mysql:5.7' locally
...省略
- 「--name」がコンテナ名の指定
- 今回は<MySQLのコンテナ名>は「mysql」とする
- 「-e」がコンテナの中の環境変数の設定
- 「-d」はデーモンのバックグラウンドコンテナで起動
- 今回は<イメージ名>は「mysql」とする
- 今回は<タグ名>は「5.7」とする
$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
828ee5985328 mysql:5.7 "docker-entrypoint.sh" About a minute ago Up About a minute 3306/tcp mysql
コンテナに bash で接続し、MySQL を確認
$ docker exec -ti mysql bash
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
exit して、MySQL は終了
PHP のコンテナを立ち上げる
公式サイトから、イメージ名を確認
(今回はPHPの「7-apache」にしました)
あらかじめ、下記のようなフォルダを作成しておく
「/<ディレクトリ>/mydoc/php」
以下、作成したディレクトリ内にて実行
$ docker run --name php -p 80:80 -v /<ディレクトリ>/mydoc/php:/var/www/html --link mysql:mysql -d <イメージ名>:<タグ名>
Unable to find image 'php:7-apache' locally
...省略
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a2a6ff105e91 php:7-apache "apache2-foreground" 50 seconds ago Up 49 seconds 0.0.0.0:80->80/tcp php
828ee5985328 mysql:5.7 "docker-entrypoint.sh" 15 minutes ago Up 15 minutes 3306/tcp mysql
「DOCKER_HOST」を確認し、ポートを80にしてアクセス
(ポートはデフォルト80なので、指定しなくても問題ない)
例)http://xxx.xxx.xx.xxx:80
この時、ファイルがないため、「Forbidden」となる
表示確認がしたい場合は、「/<ディレクトリ>/mydoc/php」に「index.php」を作成
とりあえず、phpinfoを表示させてみる
<?php
phpinfo();
再度アクセスする