Docker

【Docker】alpine3.7+php7.1+php-fpm+nginxを構築(alpine OFFICIAL REPOSITORY利用)

alpineのOFFICIAL REPOSITORYを利用します。

alpine3.7導入・設定

alpine3.7をダウンロード・導入

docker pull alpine

 

alpine3.7起動

docker run -itd -p 80:80 イメージID

 

ログイン

docker exec -it コンテナID sh

 

パッケージアップデート

apk update

 

ミドルウェア導入

php7.1導入

apk add --no-cache --virtual .php7-buildapps php7 php7-fpm php7-mbstring php7-gd php7-iconv

他に必要なものがあれば適宜追加してください。

–virtualで仮の名前を付けてインストールしておきます。後で消す際にはapk del .php7-buildappsで一括削除できます。

–purgeオプションを渡せば関連する設定ファイルも削除できます。

nginx導入

apk add nginx

 

openrc導入

サービスで操作するために導入。centos6のserviceみたいなコマンド。

apk add openrc

 

導入した後おまじないが必要

sed -i 's/#rc_sys=""/rc_sys="lxc"/g' /etc/rc.conf &&\
echo 'rc_provide="loopback net"' >> /etc/rc.conf &&\
sed -i 's/^#\(rc_logger="YES"\)$/\1/' /etc/rc.conf &&\
sed -i '/tty/d' /etc/inittab &&\
sed -i 's/hostname $opts/# hostname $opts/g' /etc/init.d/hostname &&\
sed -i 's/mount -t tmpfs/# mount -t tmpfs/g' /lib/rc/sh/init.sh &&\
sed -i 's/cgroup_add_service /# cgroup_add_service /g' /lib/rc/sh/openrc-run.sh &&\rm -rf /var/cache/apk/*

 

おまじないしてないと、意味不明のエラーが発生する

/lib/rc/sh/openrc-run.sh: line 273: can’t create /sys/fs/cgroup/〜

awk: /etc/network/interfaces: No such file or directory

など

設定

nginx設定

vi /etc/nginx/conf.d/default.conf

location /のセクションを書き換えます。

location / {
# return 404;
root html;
index index.html index.htm;
}

 

nginxを再起動します。

/etc/init.d/nginx restart

ブラウザでlocalhostにアクセスして表示されればひとまず成功です。

f:id:ishimotohiroaki:20180316150520p:plain

引き続きphpを動作させる設定をします。

vi /etc/nginx/conf.d/default.conf

phpのセクションを追加します。

location ~ \.php$ {
root 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 restart

php-fpm7設定

vi /etc/php7/php-fpm.d/www.conf

;user = nobody
;group = nobody
user = nginx
group = nginx

userとgroupをnginxに書き換えます。

php-fpm7を起動します。

/etc/init.d/php-fpm7 start

php確認

/var/lib/nginx/htmlにindex.phpを置いてphpinfoが表示できれば成功です。

<?php phpinfo();