DockerでApacheとPHPをとりあえず動かす


ディレクトリ構造

app
├── Dockerfile
└── html
    └── index.php

Dockerfile

EXPOSE をしないとYou don't have permission to access / on this server.のエラーによりサイトにアクセスできません。

FROM php:7.2.7-apache
EXPOSE 80

index.php

index.php
<form method="POST" action="index.php">
    <label for="name">名前:</label>
    <input type="text" name="name" size="15" />
    <input type="submit" name="submit" value="送信" />
</form>

<?php
if ($_REQUEST['submit'] !== null) {
    print('こんにちは、'. htmlspecialchars($_POST['name'], ENT_QUOTES | ENT_HTML5, 'UTF-8').'さん!');
}
?>

1. ビルド

appディレクトリ上
docker build ./ -t php_apache_image:ver001

2. 実行

appディレクトリ上
docker run -d -p 80:80 -v {htmlディレクトリまでのabsolute path}:/var/www/html --name php_apache_container php_apache_image:ver001

docker run -d -p 80:80 -v /Users/cassin/MyProjects/app/html:/var/www/html --name php_apache_container php_apache_image:ver001

3. サイトにアクセス

参考

Dockerの開発環境構築 (Mac + Docker + PHP + Apache)
山田祥寛 改訂版JavaScript本格入門