为了账号安全,请及时绑定邮箱和手机立即绑定

PHP-FPM 不会从 Dockerfile 启动

PHP-FPM 不会从 Dockerfile 启动

PHP
哈士奇WWW 2023-06-24 16:13:18
我正在尝试完成一些非常简单的事情,我想使用 dockerfile 从 docker 容器启动 php-fpm 服务。我的 dockerfile 内容发布在下面:   FROM debian    RUN apt-get update && apt-get install php -y && apt-get install php7.3-fpm -y && service php7.3-fpm start当我从 dockerfile 构建此映像并将其作为容器运行时,php-fpm 服务未激活。我什至尝试使用 docker 的“交互模式”(-i arg)来确保在服务作为守护进程运行的情况下容器不会退出。我很困惑,因为我的 dockerfile 中的命令 RUN service php7.3-fpm start应该已经启动了该服务。为了成功启动容器内的服务,我实际上必须使用命令手动登录docker exec -it #containerID bash并自己运行命令service php7.3-fpm start,然后服务才能工作并变为活动状态。我不明白为什么 php-fpm 服务没有从我的 Dockerfile 自动启动,任何帮助将不胜感激。提前致谢!
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

初步估计,像这样的命令service在 Docker 中根本不起作用。

Docker 容器仅运行一个前台进程。这通常不是一个初始化系统,或者如果是的话,它也足以处理一些杂务,例如僵尸进程清理。相反,Docker 映像仅包含文件系统映像和一些有关如何启动该进程的元数据,但它不会保留任何正在运行的进程。例如,如果你

RUN service php7.3-fpm start

它可能会在某个文件中记录该服务应该已启动,但是一旦命令RUN完成,正在运行的进程就不再存在。

获得正在运行的 PHP-FPM 设置的最简单方法是使用Docker Hubphp映像:

FROM php:7.3-fpm

这应该完成所有必需的设置,包括安排 FPM 服务器作为主容器命令运行;您只需要COPY输入您的应用程序代码即可。

如果您确实想自己运行它,则需要将其作为自定义映像的主要命令

CMD ["php-fpm"]

php:7.3-fpm正如Dockerfile中所做的那样。


查看完整回答
反对 回复 2023-06-24
  • 1 回答
  • 0 关注
  • 261 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号