我正在嘗試完成一些非常簡單的事情,我想使用 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 關注
- 294 瀏覽
添加回答
舉報
0/150
提交
取消