TECHLOGICS

HYLOGICS分室。作業メモやガジェットのレビューなど、主に技術系のエントリを取り扱います。

【備忘録】make docker image ( alpine + php7 + apache2 )

背景

phpの公式イメージ、実はalpineはcliとfpmしかなくてapache版はないんですよね。 とはいえ、nginx+php-fpmとかちょっと面倒だったのでapache2のalpineイメージに追加でphpを入れることにしました。

とりあえずpukiwiki動かすだけのコンテナを検証しただけでphpのモジュール全然入れてないので、現時点での実用性はあんまりないです。

設定ファイル

Dockerfile

$ cat httpd-jp\:2.4.33-alpine-php7/Dockerfile
FROM httpd:2.4.33-alpine

RUN apk --update add tzdata php7 php7-apache2 shadow
RUN cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

RUN groupmod apache -g 48
RUN usermod apache -u 48

RUN cp /usr/lib/apache2/mod_php7.so /usr/local/apache2/modules/
RUN cp /etc/apache2/conf.d/php7-module.conf /usr/local/apache2/conf/extra/

ADD httpd.conf /usr/local/apache2/conf/httpd.conf

httpd.conf

変更点は以下の通り

  • mpm_event -> mpm_preforkに変更
  • ユーザとグループをdaemonからapacheに変更(Amazon Linux2との互換性対応)
  • ログに%{X-Forwarded-For}iヘッダを追加(ELB対応)
$ diff httpd.conf.orig httpd.conf
66,67c66,67
< LoadModule mpm_event_module modules/mod_mpm_event.so
< #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
---
> #LoadModule mpm_event_module modules/mod_mpm_event.so
> LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
207,208c207,208
< User daemon
< Group daemon
---
> User apache
> Group apache
328,329c328,329
<     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
<     LogFormat "%h %l %u %t \"%r\" %>s %b" common
---
>     LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
>     LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b" common
535a536,538
>
> # Use PHP7
> Include conf/extra/php7-module.conf