我正在尝试完成一些非常简单的事情,我想使用 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中所做的那样。
- 1 回答
- 0 关注
- 261 浏览
添加回答
举报
0/150
提交
取消