はじめに
PHP 7.2がそろそろリリースされようとする昨今ですが、まだPHP5.3を利用しているシステムも少なくないと思います。今回はDockerを利用してPHP5.3/Apacheのローカル環境を構築する方法をまとめます。
なぜ Docker を利用するのか
Docker を利用するメリットは以下です
- 起動が高速
- 他開発者と環境と共有・統一できる
- 調整が簡単
前提
- Docker for Mac がインストール済み
- Docker Hub にユーザー登録済み
構築手順
方針を簡単にまとめると、Docker で PHP5.3/Apacheのイメージを作成し、それをdocker-composeで起動して利用する方針です。手順は以下にまとめます。
Docker Image を準備
Ubuntu 12.04 は初期状態で PHP 5.3.10 がインストール可能なのでそれを利用します。以下ファイルを用意します。
FROM ubuntu:12.04
MAINTAINER Your Name <your@email.com>
VOLUME ["/var/www"]
# PHP 5.3 + Apache で必要なパッケージをインストール
RUN apt-get -qq update \
&& apt-get install -y -qq --no-install-recommends \
apache2 \
libapache2-mod-php5 \
php5
COPY run /usr/local/bin/run
RUN chmod +x /usr/local/bin/run
EXPOSE 80
CMD ["/usr/local/bin/run"]
# !/bin/bash
set -e
# Apacheの環境変数を読み込み、Apache2をフォアグランドで起動。これによりコンテナ起動時にApacheが常時起動になる
source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND
イメージをビルドします。タグ名は好きな名前をつけてください。
$ docker build ./ -t hypermkt/php53-apache
Docker Hub にイメージを push
docker コマンドを利用して先ほど作成したタグ名を指定して、イメージをpushします。
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: hypermkt
Password:
Login Succeeded
$ docker push hypermkt/php53-apache:latest
成功すると以下のようにリポジトリが作成されます。
docker-compose で コンテナを起動
docker-compose.yml ファイルを用意します。ポイントとしては
- Docker Hub に pushしたイメージを利用する
- 80ポートにアクセスできるようにする
- ホストの直下とコンテナ側のドキュメントルートをマウント
を設定します。
version: '2'
services:
web:
image: hypermkt/php53-apache
volumes:
- ./:/var/www
ports:
- "80:80"
コンテナを起動します。
$ docker-compose up
動作確認
確認用にホスト側にphpinfoファイルを用意しておきます。
<?php
phpinfo();
ブラウザからアクセスすると、phpinfoが確認できました。
これで PHP 5.3 + Apache2 環境の構築完了です。
おわりに
今回は最低限の環境を構築したのみでした。WebサービスとなるとさらにPHPの拡張モジュールが必要だったり、Apahceで設定変更も必要になると思いますので、必要に応じて拡張していくと良いと思います。