【问题标题】:How to restart php-fpm inside a docker container?如何在 docker 容器中重新启动 php-fpm?
【发布时间】:2016-10-14 20:12:47
【问题描述】:

我正在使用 docker,我的容器是基于来自 php official repo 的 php:5.6-fpm 映像构建的。 是否可以从容器内部重新启动/重新加载 php-fpm?

【问题讨论】:

    标签: php docker


    【解决方案1】:

    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
    

    【讨论】:

    • 当我在容器中时效果很好。但是从外部错误调用 if: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" 知道为什么吗?
    • @panepeter 如果您提供运行它的方式,我可以提供更多建议,但错误消息说它无法在路径中找到 kill 命令。根据您的图像,您需要以某些方式运行它,例如/bin/sh -c kill -USR2 1 ...这是我最好的猜测,没有更多信息。
    • 谢谢@Encrico,你是对的! /bin/bash -c kill -USR2 1 成功了!
    • 我必须使用kill -s USR2 1
    • 对我来说 PID 1 并不总是正确的(尤其是在杀死它一次之后)。有帮助的是pkill -o -USR2 php-fpm,因为选项-o 搜索最旧的进程(主进程)并杀死它。
    【解决方案2】:

    你不必进入容器内

    在您的主机上 ps -ef|grep fpm // find master pid kill -USR2 <master_pid>

    【讨论】:

      【解决方案3】:

      这对我有用:

      如果命令 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 ]** 
      

      【讨论】:

        【解决方案4】:

        你也可以重启容器..

        sudo docker restart <container>
        

        【讨论】:

        • 例如cd /apps/laradock &amp;&amp; docker-compose restart nginx
        【解决方案5】:
        docker container kill --signal USR2 php_container_name
        

        详情:https://docs.docker.com/engine/reference/commandline/container_kill/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-28
          • 1970-01-01
          • 2020-11-05
          • 2020-01-21
          • 1970-01-01
          • 1970-01-01
          • 2017-01-10
          相关资源
          最近更新 更多