如何在同一个容器(google云运行)前面的Dockerfile中设置一个nginx?我尝试制作一个 python 服务器 (odoo) 句柄 http/2

How to set in a Dockerfile an nginx in front of the same container (google cloud run)? I tried making a python server (odoo) handle http/2

提前致谢。我的问题是,如何在容器前面的 Dockerfile 中设置 nginx?我看到了其他问题 [5],似乎允许 http/2 on odoo in cloud 运行 的唯一方法是创建一个 nginx 容器,因为 gc运行 中不允许使用边车.但我也读到过 supervisord 可以做到。有没有人能够这样做来处理 http/2 并增加云 运行 最大请求配额?

我想试试这个:在entrpoint.sh中写一个安装nginx的命令,然后将它的配置设置为用作允许http2的代理。但是,我在这里问你,因为我不确定它是否会工作,正如我在 [2] 中读到的那样,nginx 不能与 python 服务器一起工作。

整个故事:我正在 google 云 运行 + 云 sql 上部署一个 odoo ce。我将一个 odoo 配置为包含 5 个博文的演示,当我尝试下载它时,它说请求太大。然后,我想这是因为 32MB 的云 运行 请求配额 [1],因为备份大小为 52MB。然后,我看到 http/2 连接的配额是无限的,所以我在云 运行 中激活了 http/2 按钮。接下来,当我访问该服务时出现“出现连接失败”的错误。

为此我想到了两种方法:一种是将 odoo http 服务器升级到可以像 Quark 一样处理 http/2 的服务器。第一种方式对我来说似乎是不可能的,因为它可能会迫使我重写许多 odoo 的片段。然后,我想到的第二个选项是在 odoo 容器前面 运行ning(运行 是 Werkzeug 上的 python 网络服务器),一个 nginx。我在网上看到 nginx 可以将连接升级到 http/2。但是,我还了解到云 运行 正在 运行 其内部负载平衡器 [2]。那么,那么我的问题是:是否有可能在同一个 odoo 容器中 运行 一个在云上公开此服务的 nginx 运行?


参考文献:

[1] https://cloud.google.com/run/quotas
[2]
[3] https://linuxize.com/post/configure-odoo-with-nginx-as-a-reverse-proxy/
[4] https://github.com/odoo/docker/tree/master/14.0
[5] How to setup nginx in front of node in docker for Cloud Run?

Has anyone been able do that so to handle http/2 and so to increase the cloud run max request quota?

处理 HTTP/2 不会帮助您增加云上每个容器的最大请求数限制 运行。

HTTP/2 仅帮助您重用 TCP 连接以通过单个连接发送并发请求,但云 运行 并没有真正计算连接数,因此您在这里不在正确的轨道上。 HTTP/2帮不了你。

Cloud 运行 今天已经支持 1000 个容器实例(预览中有 250 个并发请求),因此您的服务有 250,000 个并发请求。如果您需要更多,请联系支持人员。

But, I ask you here as I'm not sure if it'll work, as I read in [2] that nginx won't work with a python server.

听起来不正确。

如果您配置多进程容器,您可以 运行 Python 在云上的 nginx 后面 运行。但是正如你所说,Cloud 运行不需要nginx。

总的来说,在这种情况下您不需要 HTTP/2。