コンテナの自動起動
最新バージョンのPHP-FPMをdockerのコンテナとして動かしてみたところ、思ったより安定して動いているのでしばらくこの環境で様子を見る事にした。実稼働の環境に適応させるためには、最低限でもOSが再起動した時に自動起動してくれないと困るなって事でしばらく公式ドキュメントを読み込んでみたり、ググってみるもののdockerには答えが無いっぽい。OS側でサービス化して対応するしかないかって事でちょっとサービスを書いてみた。
[Unit] Description=PHP-FPM After=docker.service Requires=docker.service [Service] ExecStart=/usr/local/bin/docker-compose -p PHP-FPM -f /etc/docker/docker-compose.yml up ExecStop=/usr/local/bin/docker-compose -p PHP-FPM -f /etc/docker/docker-compose.yml down ExecReload=/usr/local/bin/docker-compose -p PHP-FPM -f /etc/docker/docker-compose.yml restart Restart=always Type=simple [Install] WantedBy=multi-user.target
システムに反映させるため「daemon-reload」してから「enable」し「status」で確認します。
$ sudo systemctl daemon-reload $ sudo systemctl enable php-fpm $ sudo systemctl status php-fpm ● php-fpm.service - PHP-FPM Loaded: loaded (/etc/systemd/system/php-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-06-11 21:45:35 JST; 33min ago Main PID: 886 (docker-compose) Tasks: 4 (limit: 1081) CGroup: /system.slice/php-fpm.service ├─ 886 /usr/local/bin/docker-compose -p PHP-FPM -f /etc/docker/docker-compose.yml up └─1258 /usr/local/bin/docker-compose -p PHP-FPM -f /etc/docker/docker-compose.yml up
前回の「DOCKERでPHPだけ動かす」ではphp.iniにタイムゾーンの設定をしていましたが反映されなかったのでOS側で対応する事にしました。「Dockerfile」の冒頭部分を以下のように書き換えました。
FROM php:7.3.6-fpm # Replace shell with bash so we can source files RUN rm /bin/sh && ln -s /bin/bash /bin/sh ENV TZ='Asia/Tokyo'
なんかまだちょっと足りない感じもするけど、これでしばらく様子を見ようと思います。ちなみにパフォーマンスの件は「Pagespeed Insights」のインデックスで計測してみたところ、ネイティブ環境に対して93.82%から98.97%のパフォーマンスでした。仮想化レイヤが一つ増えた事によるオーバーヘッドが最悪のケースで6%ぐらいあるって事でしょうか。通常はほとんど誤差の範囲とも言えると思います。あとは時間の経過で何か不具合が出ないかの確認にしたいと思います。