鍍金池/ 問答/PHP  Linux  網絡安全/ docker搭建LNMP環(huán)境,怎樣自啟動php-fpm服務?

docker搭建LNMP環(huán)境,怎樣自啟動php-fpm服務?

為了方便開發(fā),打算創(chuàng)建一個基于docker的LNMP環(huán)境,這樣無論是換電腦,還是統(tǒng)一團隊的開發(fā)環(huán)境,就方便多了。

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

說一下過程:

  • 首先是pull官方的php鏡像php:7.x-fpm,創(chuàng)建鏡像和容器,與其它容器的服務連接都沒有問題
  • 但是這個鏡像支持的PHP擴展(extension)實在太少了,很多常用的都沒有(比如gd庫)
  • 通過 Dockerfile中設置 RUN docker-php-ext-install gd來安裝,提示缺少libpng
  • 進入容器用yum install -y libpng來裝,提示yum是未知命令
  • 通過rpm xxx來安裝yum,提示rpm是未知命令。。。

于是換了個思路,打算基于centos鏡像來創(chuàng)建自己的php-fpm鏡像,于是乎:

  • pull官方的centos 7.x鏡像,進入容器下載php源碼包,編譯、安裝一切順利
  • 啟動容器,發(fā)現(xiàn)不能自動開啟php-fpm服務
  • docker-compose中的commandentrypoint分別定義了命令(不是同時):
    /path/to/sbin/php-fpm -y /path/to/etc/php-fpm.conf,容器啟動的時候服務啟動失敗,提示信息相當于輸入了:php-fpm -h,全是相關的參數(shù)說明

感覺這個問題是因為php-fpm處于sbin目錄中,應該是超級用戶才可以運行,但是容器啟動的時候執(zhí)行command或者entrypoint并不是超級用戶,所以就運行失敗
這導致我每次啟動容器編排后,還得進入php容器手動開啟服務才行

實在不知道該怎么辦了,期望各位大神能給點提示:
1.怎樣讓centos容器啟動時自動開啟php-fpm服務?
2.或者不采用這個思路,換用其它解決思路也行

實在感激不盡,謝謝~

回答
編輯回答
柒喵

剛發(fā)完此貼,就看到了另一個帖子:
https://segmentfault.com/q/10...

發(fā)現(xiàn)原來官方的php:7.x-fpm鏡像是基于ubantu構建的,當然沒有yum
所以還是采用剛開始的思路,采用apt-get來安裝相關的包,解決PHP擴展的問題就OK了

2018年6月11日 19:05
編輯回答
舊酒館

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

2017年8月11日 17:14
編輯回答
舊時光

在Dockerfile中執(zhí)行
RUN /usr/local/php/sbin/php-fpm

2017年1月20日 23:31