gpt4 book ai didi

python - 容器化模式最佳实践

转载 作者:行者123 更新时间:2023-12-02 20:50:07 25 4
gpt4 key购买 nike

我正在使用 https://hub.docker.com/r/tiangolo/uwsgi-nginx 对 Python webapp 进行 dockerizing。 image,它使用 supervisor 来控制 uWSGI 实例。

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

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

最佳答案

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

user2105103不过是对的,您使用的图像已经失去了这种优势,因为它运行 Python 和 Nginx,您可以使用 LibreOffice headless 扩展它并打包您的整个应用程序而无需更改代码。

如果您转向更“最佳实践”的方法,您将拥有一个跨 Docker 网络中的三个容器运行的分布式应用程序:

  • nginx - 网络代理,这是应用程序的公共(public)入口点。 Nginx 可以做路由、缓存、SSL 终止、速率限制等。
  • app - 你的 Python 应用程序,仅在 Docker 网络中可见。接收来自 nginx 的请求并使用 libreoffice用于文档操作;
  • libreoffice - 以 headless 模式运行,API 暴露,但仅在 Docker 网络中可用。

  • 为此,您需要更改代码,引入类似 PyOO 的内容。从应用容器远程使用 LibreOffice API。

    关于python - 容器化模式最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40075618/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com