![启动命令仅在手动运行时才有效](https://linux22.com/image/727518/%E5%90%AF%E5%8A%A8%E5%91%BD%E4%BB%A4%E4%BB%85%E5%9C%A8%E6%89%8B%E5%8A%A8%E8%BF%90%E8%A1%8C%E6%97%B6%E6%89%8D%E6%9C%89%E6%95%88.png)
安装 PHP FPM 时出现以下错误:
Creating config file /etc/php/7.0/fpm/php.ini with new version
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
我尝试在dockerfile中进行以下调整:
RUN echo exit 0 > /usr/sbin/policy-rc.d
RUN /etc/init.d/php7.0-fpm start
RUN service php7.0-fpm start
这些都不起作用,并且 PHP FPM 在启动时无法运行。
但是如果我通过 ssh 登录并手动运行以下命令:
service php7.0-fpm start
然后它就开始工作了!这里有什么问题?
答案1
问题是您必须提供调用的实用程序的完整路径。当您从 ssh 会话执行此操作时,您会有一些PATH
环境变量,其中包含查找给定实用程序的目录列表。而 docker 中没有这样的列表。
手动运行:
which service
您将获得实用程序的完整路径。将该路径提供给配置,而不是单个实用程序名称。
答案2
invoke-rc.d:policy-rc.d 拒绝执行启动。
尝试添加:
RUN printf "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d
RUN chmod +x /usr/sbin/policy-rc.d
看:如何解决“invoke-rc.d: policy-rc.d 拒绝执行启动。”
invoke-rc.d:无法确定当前运行级别
尝试:
RUN RUNLEVEL=1 dpkg --configure -a
或者:
RUN RUNLEVEL=1 dpkg-reconfigure php7.0-fpm