如何为RabbitMQ PHP任务创建Docker容器

如何为RabbitMQ PHP任务创建Docker容器,php,docker,rabbitmq,daemon,Php,Docker,Rabbitmq,Daemon,我在Docker中有一个LAMP设置,作为我正在开发的Cordova项目的API 我刚刚研究了PHP排队和RabbitMQ,但卸载任务将是加快照片上传或电子邮件发送等任务的主要帮助 我有这段代码来监听和使用RabbitMQ消息来发送电子邮件,但是我不知道如何使用PHP将其作为一种守护进程启动。我还计划添加更多的队列,这将需要更多的侦听器,所以我的想法是让Docker任务容器专用于侦听和使用任务 使用Enqueue\AmqpLib\AmqpConnectionFactory; 使用Enqueue\

我在Docker中有一个LAMP设置,作为我正在开发的Cordova项目的API

我刚刚研究了PHP排队和RabbitMQ,但卸载任务将是加快照片上传或电子邮件发送等任务的主要帮助

我有这段代码来监听和使用RabbitMQ消息来发送电子邮件,但是我不知道如何使用PHP将其作为一种守护进程启动。我还计划添加更多的队列,这将需要更多的侦听器,所以我的想法是让Docker任务容器专用于侦听和使用任务

使用Enqueue\AmqpLib\AmqpConnectionFactory;
使用Enqueue\AmqpLib\AmqpContext;
/**
*初始化队列
*/
emailQueue();
函数emailQueue(){
//创造消费者
$context=(新的AmqpConnectionFactory(ENQUEUE_选项))->createContext();
$queue=$context->createQueue('send_email');
$context->declareQueue($queue);
$consumer=$context->createConsumer($queue);
while(true){
//得到消息
$message=$consumer->receive($timeout=10);
如果($message){
//提取args
$args=json_decode($message->getBody(),true);
摘录($args);
//发送电子邮件
$mail=new Mailer();
$mail->setFrom($from,$from_name);
$mail->addAddress($email);
$mail->Subject=$Subject;
$mail->Body=$Body;
$mail->send();
//承认
$consumer->acknowledge($message);
}
}
}

我如何创建一个Docker容器来启动我的PHP脚本来侦听和使用PHP任务,从而不阻止我的主应用程序执行?

我最终遵循了这里给出的教程


使用supervisord,我可以安排几个PHP任务使用者脚本,在出现故障时自动重新启动,并记录到Docker日志文件以进行监视。

为时已晚,但可能有助于其他人:您可以创建Cron作业运行群集script@aminmahmoudiCron在我的案例中不起作用,因为在发生故障的那一刻,它就死了,容器也坏了关闭后,supervisord提供了一种更易于管理的监控方法