我在Docker容器中无法识别进程:
sudo docker exec -it php7-fpm bash -c 'nohup php /www/site/artisan queue:listen >> /www/site/nohup.log 2>&1'
服务正常,直到我按ctrl + c。有没有什么方法可以在不杀死它的情况下否认这个过程?
答案 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'