如何在单个Docker容器中托管多个Flask应用程序?

时间:2019-06-10 15:01:34

标签: api docker flask docker-image

在项目中,我有两个flask应用程序,第一个api在批处理文档上调用,并将它们分类为预测的类,并且在json文件中维护所有批处理的状态。第二个api的工作是通过读取状态文件来告诉特定批次的状态,通过该批次可以命中它。现在我们不能在不同的容器上执行应用程序,因为它们都具有文件依赖性。状态告知api会告知批次的实时状态,因此我们也无法等待处理api首先完成它的atsk,然后导出状态文件以供第二个api使用。我应该如何应对这一挑战,任何线索都将大有帮助。

最初,我在docker文件中尝试了以下几行:

CMD [“ python3”,“ ./pollingAPI.py”] CMD [“ python3”,“ ./m_api.py”]

我也在命令中尝试了nohup,但没有结果:

运行nohup python3 pollingAPI.py和sleep 5 CMD [“ python3”,“ ./m_api.py”]

也无法使用屏幕:

运行nohup python3 pollingAPI.py和sleep 5 &&屏幕-S myScreen CMD [“ python3”,“ ./m_api.py”]

1 个答案:

答案 0 :(得分:0)

因此Docker最佳实践指出,每个容器中应只运行一个主要应用程序。原因是您希望您的应用程序在PID 1上运行并独自接受任何和所有停止命令。最好的情况是始终运行两个单独的容器,每个容器运行一个应用程序。

话虽如此,本文档明确概述了在容器中运行多个服务所必须具备的三个主要选项。我建议使用主管,但所有这些都是有效的。

https://docs.docker.com/config/containers/multi-service_container/