2017-06-19 46 views
1

部署一个Python多克尔容器并成功执行脚本容器崩溃并重新启动在一个循环中示出了下面的错误消息后后:多克尔容器崩溃Python脚本的执行之后

2017-06-19 13:22:49 [APP/PROC/WEB/0] OUT Exit status 0 
2017-06-19 13:22:49 [CELL/0] OUT Exit status 0 
2017-06-19 13:22:49 [CELL/0] OUT Destroying container 
2017-06-19 13:22:49 [API/0] OUT Process has crashed with type: "web" 
2017-06-19 13:22:49 [API/0] OUT App instance exited with guid 85e7922e-5a0c-4430-994a-324e5abc0c14 payload: {"instance"=>"", "index"=>0, "reason"=>"CRASHED", "exit_description"=>"2 error(s) occurred:\n\n* Codependent step exited\n* cancelled", "crash_count"=>1, "crash_timestamp"=>1497871369566402154, "version"=>"b9800e3a-b057-4cc5-b7e4-c01f9b3c6594"} 

本地执行相同的搬运工图像它不会抛出任何错误。我执行的Python脚本正在执行一个简单的打印命令,我甚至为执行后发送到容器的SIGTERM信号实现了一个处理程序。

+0

看起来像一个正常的终止:'退出状态0'不喜欢崩溃。似乎有些东西试图重启容器。 – Henry

+0

在本地Docker上运行相同的应用程序会正确执行脚本并销毁该容器。但是,在CloudFoundry中,它会以循环方式重新启动容器。 – user3080315

+0

我对CloudFoundry没有经验。你是否指定了容器的重启行为。 – Henry

回答

3

在CF中,应用程序不应该完成。但是,如果您的脚本只是打印某些内容,则会在执行后执行exit 0。因此,应用程序容器停止,CF注册一个“撞车”,然后将重新启动,根据应用程序生命周期中的应用: https://docs.cloudfoundry.org/devguide/deploy-apps/app-lifecycle.html

+0

谢谢你的启发。有解决方案来解决重启问题吗?我不介意崩溃,但我不希望容器始终重新启动。 – user3080315

+1

@ user3080315我不这么认为,因为应用程序应该始终运行。您必须实施某种解决方法,例如在应用程序崩溃后停止应用程序或在脚本末尾添加一个无限循环(只有长时间睡眠)。 –