現(xiàn)象
使用 docker-compose up -d 啟動 php-fpm 容器后會發(fā)現(xiàn)容器成功啟動之后會馬上關(guān)閉阁簸。由于設(shè)置了 restart: always
會導(dǎo)致容器再次啟動然后關(guān)閉
背景
官方 php-fpm : 7.1 鏡像旦部,使用自定義的 php-fpm 配置。
php-fpm 配置是從現(xiàn)有生產(chǎn)服務(wù)器上復(fù)制過來的纵朋。配置沒有問題厨内。
docker-compose.yml
[root@test php-fpm]# cat docker-compose.yml
version: "3"
services:
php-fpm:
#image: phpfpm_php-fpm
build:
context: /ROOT/docker/dockerfile
dockerfile: php-fpm
volumes:
- "/ROOT:/ROOT"
- "/etc/localtime:/etc/localtime"
# 使用自己的php.ini
- "/ROOT/conf/php/php.ini:/usr/local/etc/php/php.ini"
#使用自己的php-fpm.conf
- "/ROOT/conf/php/php-fpm.conf:/usr/local/etc/php-fpm.conf"
container_name: php72
restart: always
hostname: php72
問題排查
看log祈秕,發(fā)現(xiàn)fpm正常啟動了渺贤,然后馬上就退出
[root@ php-fpm]# docker logs 18fb27874716
[18-Jul-2019 15:21:20] NOTICE: fpm is running, pid 1
[18-Jul-2019 15:21:20] NOTICE: ready to handle connections
[18-Jul-2019 15:33:37] NOTICE: Finishing ...
[18-Jul-2019 15:33:37] NOTICE: exiting, bye-bye!
跟鏡像中自帶的 php-fpm.conf 比較發(fā)現(xiàn)鏡像中使用 daemonize = no
,而我自定義配置中 daemonize = yes
是后臺運行的请毛。
那么很明顯官方鏡像是故意使用 daemonize = no
不讓 fpm 在后臺中運行志鞍,進(jìn)而阻止容器退出
解決方案
修改 php-fpm.conf 中如下
daemonize = no