docker搭建LNMP环境,怎样自启动php-fpm服务?

发布于 2022-09-06 21:36:02 字数 1284 浏览 14 评论 0

为了方便开发,打算创建一个基于docker的LNMP环境,这样无论是换电脑,还是统一团队的开发环境,就方便多了。

编排了一个docker-compose.yaml文件,里面有nginx、php-fpm、mysql、redis等服务,除了php-fpm其它都搞定了

说一下过程:

  • 首先是pull官方的php镜像php:7.x-fpm,创建镜像和容器,与其它容器的服务连接都没有问题
  • 但是这个镜像支持的PHP扩展(extension)实在太少了,很多常用的都没有(比如gd库)
  • 通过 Dockerfile中设置 RUN docker-php-ext-install gd来安装,提示缺少libpng
  • 进入容器用yum install -y libpng来装,提示yum是未知命令
  • 通过rpm xxx来安装yum,提示rpm是未知命令。。。

于是换了个思路,打算基于centos镜像来创建自己的php-fpm镜像,于是乎:

  • pull官方的centos 7.x镜像,进入容器下载php源码包,编译、安装一切顺利
  • 启动容器,发现不能自动开启php-fpm服务
  • docker-compose中的commandentrypoint分别定义了命令(不是同时):
    /path/to/sbin/php-fpm -y /path/to/etc/php-fpm.conf,容器启动的时候服务启动失败,提示信息相当于输入了:php-fpm -h,全是相关的参数说明

感觉这个问题是因为php-fpm处于sbin目录中,应该是超级用户才可以运行,但是容器启动的时候执行command或者entrypoint并不是超级用户,所以就运行失败
这导致我每次启动容器编排后,还得进入php容器手动开启服务才行

实在不知道该怎么办了,期望各位大神能给点提示:
1.怎样让centos容器启动时自动开启php-fpm服务?
2.或者不采用这个思路,换用其它解决思路也行

实在感激不尽,谢谢~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

回忆躺在深渊里 2022-09-13 21:36:02

可以docker logs 容器名 看看容器的日志

场罚期间 2022-09-13 21:36:02

刚发完此贴,就看到了另一个帖子:
https://segmentfault.com/q/10...

发现原来官方的php:7.x-fpm镜像是基于ubantu构建的,当然没有yum
所以还是采用刚开始的思路,采用apt-get来安装相关的包,解决PHP扩展的问题就OK了

却一份温柔 2022-09-13 21:36:02

在Dockerfile中执行
RUN /usr/local/php/sbin/php-fpm

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文