オトナの事情で PHP 5.3 系のシステムなんてものを保守する必要に迫られて DockerHub を漁ってたんですが、流石にサポート切れのバージョンはオフィシャルは勿論、草の根ベースでもなかなか厳しいですな。そんな中、なんとかちょうど良さげなのがあったので備忘録を。こいつです↓
Alpine ベースなので貧弱貧弱ゥな鯖でもサクサク動いて助かります(EC2 t3.nano で確認)。色々種類があるのですが、最初からよく使う PHP モジュールが同梱された Apache2 版の cespi/php-5.3:modules-apache が良さげ。Dockerfile の公開は無いので history をざっと見たけど、素性も特に悪くなさそう。以下、docker run するまでの簡単な例です。
まず、作業ディレクトリを作って PHP ファイルをデプロイ。
$ mkdir -p /foo/bar/htdocs $ cat <<EOS > /foo/bar/htdocs/info.php <?php phpinfo(); EOS
あとは、そのディレクトリを指定してコンテナを起動するだけ。
$ docker container run \ --rm -itd \ -p 8000:80 -v "/foo/bar/htdocs:/var/www/htdocs" \ -e "APACHE_DOCUMENT_ROOT=/foo/bar/htdocs" \ cespi/php-5.3:modules-apache-latest
curl http://localhost:8000/info.php などとすれば動作確認できます。Cake1.2 のアプリという、目眩がしそうな古いプログラムを稼働させて見ましたが問題無いようです。尚、PHP の設定を調整したい場合は、/foo/bar/php.ini を作っておいて、パラメタに
-v /foo/bar/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro
を指定してやれば OK です。楽ちん!
※ちなみに用意されている PHP モジュールですが、コンテナの中に入って確認したところ以下のとおりでした。
# php -m [PHP Modules] apc bcmath Core ctype curl date dom ereg fileinfo filter ftp gd hash iconv json ldap libxml mbstring mcrypt memcache memcached mysql mysqlnd openssl pcre PDO pdo_mysql pdo_sqlite Phar posix readline Reflection session SimpleXML soap SPL SQLite sqlite3 standard tokenizer xml xmlreader xmlwriter xsl zip zlib [Zend Modules]