php7.1+php-fpmはphpのオフィシャルリポジトリを利用します。
nginxのオフィシャルリポジトリを使って構築できるかもしれませんが。標準パッケージがphp5のため構築に時間がかかりそうと判断し、phpオフィシャルレポジトリのものを利用しnginxを後でインストールする方法にしました。
phpオフィシャルレポジトリのパッケージにはWebサーバが含まれていないので、apkでnginxを導入して連携します。
※2017/3/14追記
alpine3.7はphp7.1のパッケージが使えてphp-fpmもあったので、php7.1の環境ならalpine3.7を使ったほうが良さそう
導入
ダウンロード
docker pull php:7.1-fpm-alpine
起動
docker run -itd -p 80:80 イメージID
ログイン
docker exec -it コンテナID sh
phpバージョン確認
# php -v
php-fpmバージョン確認
# php-fpm -v
設定
phpの設定関連のディレクトリは、/usr/local/etc/以下になります。
nginx導入・設定
apk add –no-cash nginx
実行ユーザーの設定
/etc/nginx/nginx.conf
user www-data;
php-fpm通信の設定
/etc/nginx/nginx.conf
以下のコメントを外します。
location ~ \.php$ {
root /var/www/html; ←変更
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; ←変更
include fastcgi_params;
}
nginx起動
/etc/init.d/nginx start
エラーが発生
* You are attempting to run an openrc service on a
* system which openrc did not boot.
* You may be inside a chroot or you may have used
* another initialization system to boot this system.
* In this situation, you will get unpredictable results!
* If you really want to do this, issue the following command:
* touch /run/openrc/softlevel
* ERROR: nginx failed to start
touch /run/openrc/softlevelを実行すれば起動が成功しました。
serviceコマンド的なrc-serviceコマンドを導入
apk add openrc
openrc設定
/etc/nginx # sed -i ‘s/#rc_sys=””/rc_sys=”lxc”/g’ /etc/rc.conf
/etc/nginx # echo ‘rc_provide=”loopback net”‘ >> /etc/rc.conf
/etc/nginx # sed -i ‘s/^#\(rc_logger=”YES”\)$/\1/’ /etc/rc.conf
/etc/nginx # sed -i ‘/tty/d’ /etc/inittab
/etc/nginx # sed -i ‘s/hostname $opts/# hostname $opts/g’ /etc/init.d/hostname
/etc/nginx # sed -i ‘s/mount -t tmpfs/# mount -t tmpfs/g’ /lib/rc/sh/init.sh
/etc/nginx # sed -i ‘s/cgroup_add_service /# cgroup_add_service /g’ /lib/rc/sh/o
penrc-run.sh
/etc/nginx # touch /run/openrc/softlevel
※touchは失敗しました
/var/www/htmlにphp.infoを置いて表示できれば成功です。
<?php phpinfo();
まだ不明な点は、alpine linuxを起動すると自動でphp-fpmが起動しているのだが、どこで起動しているのか分からない。