2017-08-05 35 views
1

我有一個安裝了PHP-FPM的Docker容器。要使用-d選項啓動這個我試過,但容器立即退出:無法弄清楚如何使用Docker容器啓動PHP-FPM

docker run -d --name u12php53 -p 9001:9000 php53 /usr/local/etc/php-fpm.sh 

/usr/local/etc/php-fpm.sh內容是:

service php5-fpm start && tail -F /var/log/php5-fpm.log 

如果我開始喜歡這個泊塢窗:

docker run -it --name u12php53 -p 9001:9000 -v php53 

和手動啓動php-fpm.shPHP-FPM工作正常,並將其日誌文件打印到stdout。

最終目標是將Docker配置爲在系統啓動(或重新啓動)時啓動我的容器。

回答

0

問題出在這裏:service php5-fpm start。當你執行這個命令過程時,php-fpm將從shell中分離出來。但是Docker只在主進程還活着的時候才能工作。

嘗試運行php-fpm,如official image:只需刪除入口點並添加CMD ["php-fpm"]即可。

另外,你爲什麼要創建自己的php-fpm圖像?可能你可以使用official圖片?

+0

我需要PHP 5.3的是不再支持,據我看到的。不是主進程/usr/local/etc/php-fpm.sh?它不會退出,因爲我使用'tail -F'。另一個問題是,如果我用命令「docker run -d -name u12php53 -p 9001:9000 php53 yes」啓動docker,它不會退出。 – Dmitriano

+0

thx,我明白你爲自己建立自己的形象。主進程必須以'CMD'指令開始。 '入口點'通常用於準備容器:配置,進行遷移等。可以讓我看看你的Dockerfile嗎? –

+0

我在這裏描述了所有的PHP-FPM安裝程序https://developernote.com/2017/07/php56-in-docker-with-nginx-on-ubuntu16/(還有Dockerfile)。我從PHP 5.6開始,但最終安裝了PHP 5.3,並使用基於Ubuntu 12.04的類似Docker文件。看起來我不能把這個CMD放到Dockerfile中,因爲我用bash手動完成了大部分安裝步驟。 – Dmitriano

0

可能解決的辦法是:

docker run -d --name u12php53 -p 9001:9000 -v php53 bash -c '/usr/local/etc/php-fpm.sh' 

大概是在Dockerfile這樣的等價物:

CMD ["sh", "/usr/local/etc/php-fpm.sh"]