docker集装箱内的nohup服务

docker容器内的进程有问题:

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

服务工作正常,直到我按Ctrl + C。 有没有什么办法可以解决这个过程而不杀死它?

跳过所有的努力去nohup和背景,而不是从stream程中分离(注意-d ):

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

只是不要这样做。 “docker exec”是为了方便debugging。 它并不打算用来运行真实的服务。

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

通过改变在“docker run”命令行上运行的命令,可以在每个容器中运行的内容中有差异。

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