码头工人集装箱内的nohup服务

时间:2016-07-16 21:35:14

标签: laravel docker

我在Docker容器中无法识别进程:

sudo docker exec -it php7-fpm bash -c 'nohup php /www/site/artisan queue:listen >> /www/site/nohup.log 2>&1'

服务正常,直到我按ctrl + c。有没有什么方法可以在不杀死它的情况下否认这个过程?

2 个答案:

答案 0 :(得分:1)

不要这样做。 " docker exec"旨在作为调试方便。它不打算用于运行实际服务。

目的是使用" docker run"运行服务,使用Dockerfile定义的映像,生成单个容器。该图像可以运行多个进程,只要它们彼此紧密耦合即可。如果没有,您应该使用多个容器。

通过更改在" docker run"上运行的命令,您可以对每个容器中运行的内容进行差异。命令行。

或者,要连接耦合的容器,您可以使用" docker compose"定义每个相关服务及其相互关系。

答案 1 :(得分:1)

将所有努力转移到nohup和背景,而不是从流程中分离(请注意-d):

sudo docker exec -itd php7-fpm bash -c 'php /www/site/artisan queue:listen'