DockerでPHP7.0 + Apacheの環境を構築する
PHP7.0 + Apacheを起動する
docker run -d -p 80:80 --name php70-apache php:7.0-apache
でイメージからコンテナを立ち上げる(ローカルにimageがない場合はDocker Hubから取得してくれる)
-p
オプションでポートを80番でフォワード
$ docker run -d -p 80:80 --name php70-apache php:7.0-apache Unable to find image 'php:7.0-apache' locally 7.0-apache: Pulling from library/php f49cf87b52c1: Pull complete 185616061386: Pull complete 5fc132db2e0d: Pull complete 00c1c323341a: Pull complete ff3701349211: Pull complete faab1d6ad70f: Pull complete eae8d88d75e0: Pull complete 7fbd4c732645: Pull complete b2e59bdd1208: Pull complete d5519147d4e5: Pull complete 512315391b1a: Pull complete b32d82403bad: Pull complete b5eb11551d42: Pull complete 02fee8125e6e: Pull complete Digest: sha256:6616fa9ab36d721c2e3e0e128295f474f1e6f5f7bd04207ce0dc50581ecd4073 Status: Downloaded newer image for php:7.0-apache f4821286b2156584088f0c29c6e09c6cc4b582c310b6449ca94892bb944e219f
Apacheが起動していることを確認
$ curl http://localhost/ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access / on this server.<br /> </p> <hr> <address>Apache/2.4.10 (Debian) Server at localhost Port 80</address> </body></html>
php70-apacheコンテナへログインする Forbiddenページしか表示されないので、実際にPHPを書いて表示させてみる
$ docker container exec -ti php70-apache bash $ echo '<?php phpinfo();' > index.php
ホスト⇄コンテナ間でディレクトリを同期する
コンテナを削除した際に同時にそのコンテナ内にあるファイルも消えてしまう
なので、ホスト側とコンテナのディレクトリを同期させて、そこにファイルを書き込む形式をとる
# コンテナを停止 $ docker container stop php70-apache # コンテナを削除 $ docker container rm php70-apache
新しく新しくディレクトリが同期されるコンテナを作成する
ホスト側の同期対象となるディレクトリ
/Users/121799/docker/php70-apache/www
コンテナ側はドキュメントルートである
/var/www/html
とする
$ docker run -d -p 80:80 -v /Users/121799/docker/php70-apache/www:/var/www/html --name php70-apache php:7.0-apache e78a1ac509425b8cf56ee2c0e988a5d5ec39eb539ea8ffefcced4a7ab6bcea76
/Users/121799/docker/php70-apache/www
にいる場合に
$echo '<?php phpinfo();' > index.php
これで再度、localhostにアクセスしてみる ホスト側で作成されたファイルがコンテナへ正しく同期されていることが確認できる
参考URL