【发布时间】:2016-10-14 20:12:47
【问题描述】:
我正在使用 docker,我的容器是基于来自 php official repo 的 php:5.6-fpm 映像构建的。 是否可以从容器内部重新启动/重新加载 php-fpm?
【问题讨论】:
我正在使用 docker,我的容器是基于来自 php official repo 的 php:5.6-fpm 映像构建的。 是否可以从容器内部重新启动/重新加载 php-fpm?
【问题讨论】:
php-fpm是一个进程管理器,支持USER2信号,用于重新加载配置文件。
从容器内部:
kill -USR2 1
外面:
docker exec -it <mycontainer> kill -USR2 1
完整示例:
docker run -d --name test123 php:7.1-fpm-alpine
docker exec -it test123 ps aux
docker exec -it test123 kill -USR2 1
docker exec -it test123 ps aux
【讨论】:
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"kill\": executable file not found in $PATH" 知道为什么吗?
/bin/bash -c kill -USR2 1 成功了!
kill -s USR2 1。
pkill -o -USR2 php-fpm,因为选项-o 搜索最旧的进程(主进程)并杀死它。
你不必进入容器内
在您的主机上
ps -ef|grep fpm // find master pid
kill -USR2 <master_pid>
【讨论】:
这对我有用:
如果命令 fpm restart 失败,在 Docker 容器中运行它 -> www#:
root@...:/var/www# **ps -ef|grep fpm**
www-data 160 1 0 10:02 ? 00:00:00 php-fpm: pool www
www-data 161 1 0 10:02 ? 00:00:00 php-fpm: pool www
root 1111 170 0 10:04 pts/0 00:00:00 grep --color=auto fpm
root@...:/var/www# **kill -USR2 170**
root@...:/home/user/Docker# **docker-compose stop**
Stopping docker_nginx_1 ... done
Stopping docker_oracle_1 ... done
root@...:/home/user/Docker# **docker-compose up -d**
Starting docker_oracle_1 ... done
Starting docker_nginx_1 ... done
root@...:/home/user/Docker# **docker-compose exec oracle bash**
root@...:/var/www# **/etc/init.d/php7.2-fpm restart**
* Restarting PHP 7.2 FastCGI Process Manager php-fpm7.2 **[ OK ]**
【讨论】:
你也可以重启容器..
sudo docker restart <container>
【讨论】:
cd /apps/laradock && docker-compose restart nginx
docker container kill --signal USR2 php_container_name
详情:https://docs.docker.com/engine/reference/commandline/container_kill/
【讨论】: