首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >容器化模式最佳实践

容器化模式最佳实践
EN

Stack Overflow用户
提问于 2016-10-17 05:20:10
回答 2查看 159关注 0票数 0

我正在使用https://hub.docker.com/r/tiangolo/uwsgi-nginx镜像对接一个Python webapp,它使用supervisor来控制uWSGI实例。

我的应用程序实际上需要一个额外的主管协调的进程来运行(LibreOffice headless,我使用它通过appy模块生成文档),我想知道实现它的合适模式是什么。

在我看来,我可以根据需要使用额外的管理程序配置(以及所有必要的操作系统级安装步骤)来扩展上面的映像,但这将与在给定容器中运行最少不同进程的一般原则相矛盾。然而,由于我的Python应用程序被设计为仅在本地与LibreOffice对话,我不确定如何使用更容器化的方法来实现它。感谢您的帮助或建议。

EN

回答 2

Stack Overflow用户

发布于 2016-10-17 18:36:21

每个容器一个进程的建议是合理的- Docker只监控容器运行时启动的进程,所以如果你有多个进程,Docker不会监视它们。这也是一种更好的设计--您拥有轻量级的、专注于单一职责的容器,并且您可以独立管理它们。

user2105103是对的,你使用的图像已经失去了这种好处,因为它运行Python和Nginx,你可以用LibreOffice headless扩展它,并在不更改代码的情况下打包整个应用程序。

如果你转向一种更“最佳实践”的方法,你会有一个分布式的应用程序运行在Docker网络中的三个容器上:

  • nginx - web代理,这是应用程序的公共入口点。Nginx可以做路由,缓存,SSL终止,速率限制等。
  • app -你的Python应用程序,只在Docker网络中可见。接收来自Docker的请求,并对Docker manipulation;
  • libreoffice使用libreoffice -在无头模式下运行,但仅在Docker网络中可用。

为此,您需要更改代码,引入诸如PyOO之类的代码,以便从应用程序容器远程使用LibreOffice应用程序接口。

票数 2
EN

Stack Overflow用户

发布于 2016-10-17 05:34:20

您已经破坏了“每个容器一个进程”--只需添加另一个进程即可。这不是一个严格的规则,甚至不是每个人都同意的规则。

向外扩展,或者更好地编写自己的自定义容器。这样你就拥有了它,你理解了它,它为你的目的进行了优化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40075618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档