作りたかったわけです。
色々と苦戦したので、メモとして残します。
イメージ
イメージ名は php<version>-apache
で統一されています。
最新は7.3、 一番古いものは5.3でした。
apacheのhttpd.conf
php5.5~
ドキュメントルートを変更したい場合などあると思います。
基本的には以下のようにdocker-compose.yml
で000-default.confをマウントしてしまえば大丈夫です。
services: php55: volumes: - ./000-default.conf:/etc/apache2/sites-available/000-default.conf
~php5.4
docker-compose.yml
でマウントしても反映されません。
サボらずにDockerfile書きましょう。
なお、php5.4では DirectoryIndex
がデフォルトでOff、php5.3ではデフォルトでOnのようです。
OSへのパッケージインストール
php5.6~
Dockerfile
内でapt-getするだけです。
RUN apt-get update && apt-get install -y libxslt1-dev
~php5.5
OSが古いようで、そのままではapt-get updateできません。
公開鍵を追加したり、source.listをいじる必要があります。
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010 \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9D6D8F6BC857C906 \ && echo "deb http://deb.debian.org/debian jessie main" > /etc/apt/sources.list \ && echo "deb http://security.debian.org jessie/updates main" >> /etc/apt/sources.list \ && apt-get update \ && apt-get install -y \ libxslt1-dev
参考:
PHPエクステンションの追加
php5.4~
公式サイトにもありますが、Dockerfileに以下のように書くだけで、簡単に追加できます。
RUN docker-php-ext-configure xsl --with-xsl=/usr/include RUN docker-php-ext-install xsl
php5.3
docker-php-ext-xxx
系のスクリプトが使えません。
自分でビルドする必要があります。
まず、phpのソースファイルを落としてくる必要があります。
$PHP_VERSION
には落としたいphpのバージョンを入れてください。
RUN curl -SL "http://php.net/get/php-$PHP_VERSION.tar.bz2/from/this/mirror" -o php.tar.bz2 \ && mkdir -p /usr/src/php \ && tar -xf php.tar.bz2 -C /usr/src/php --strip-components=1
次に、エクステンションのMakefileを作成します。
RUN cd /usr/src/php/ext/xsl \ && phpize \ && ./configure
そして、ビルドをして.so
ファイルを出力します。
RUN cd /usr/src/php/ext/xsl \ && make \ && make install
最後に、php.iniで.so
ファイルの場所を読み込ませます。
php.ini
extension=/usr/local/lib/php/extensions/no-debug-non-zts-20090626/xsl.so
Dockerfile
COPY ./php.ini /usr/local/lib/php.ini
まとめ
なるべくphp5.3は使わない方がいいです・・・環境作るのも大変。