odoo - 您是否找到了一种将 odoo 核心模块以不同形式保存在 v14 中的方法?那么,可以在 gcloud run 中部署 odoo 吗?
问题描述
我想尽可能便宜地部署 odoo。我尝试使用 gcloud sql (15-30€/m) + cloud run。但是几分钟后,odoo 界面向我显示了一个白屏,控制台中有很多日志,类似于:
GET 404 1.04 KB24 ms Chrome 91 https://bf-dev3-u7raxlu3nq-ew.a.run.app/web/content/290-f328144/1/website.assets_editor.css
我的解释是,由于云运行是无状态的,并且 Web 静态文件似乎存储在核心模块中,因此在容器被杀死后,这些信息就会丢失。由于我已经花了一个月的时间寻找解决方案,在尝试任何其他部署方式之前,我问社区:您是否找到了一种将 odoo 核心模块以不同形式保存在 v14 中的方法?那么,可以在 gcloud run 中部署 odoo 吗?
在这里,我列出了我尝试过的所有想法:
首先,我认为这个 css 文件存储在 werkzeug 会话中,所以我尝试了两个插件,将这个会话存储在与文件存储不同的位置。这些插件是 camptocamp odoo-cloud-platform-14.0/session-redis 和 misc-addons-13.0/base_session_store_psql。但是,后来问题依然存在。
然后我读到web编辑器中生成的静态css和js文件作为附件存储在odoo中,插件misc-addons-13.0/ir_attachment_s3可以将这些文件存储在s3中。但是,虽然我配置了这个插件,但问题仍然存在。
接下来,我发现这个链接描述了需要重新生成资产以便将它们存储在数据库中。但是,尽管我这样做了,但问题仍然存在。
最后,我想以其他方式部署odoo。直接在 vm 中的方式似乎更加简约和标准,因此似乎有更多的机会工作,尽管很难实现 gitops。它可以通过 docker compose 在 vm 中部署容器,这将有助于部署更新。Gke anthos 似乎也实现了 gitops 并且似乎保留了卷,但在描述中它显示 gke anthos 是无状态的。最后,还有在 k8s 集群中部署的方式,这种方式将实现容器并允许在 vm 中与 docker compose 方式进行自动缩放。但确实它似乎更昂贵且更难以实施。关于似乎更昂贵,它被认为是尝试小型工作节点机器,因此在夜间成本保持较小。关于部署的难度,希望实现 gitops,所以似乎应该添加 argo 或其他。另外,我听说 gke autopilot 有一个很好的免费层并且更容易部署。
提前致谢 :)
解决方案
Cloud Run 不是很好的解决方案。实际上,如果 werkzeug 会话持久保存在内存中,则同一个客户端不一定每次都访问同一个实例,因此即使在会话中间也会丢失文件。
最好的解决方案是使用带有粘性会话配置的 VM。您可以在 Compute Engine 上使用老派部署,或在 GKE/K8S 上使用 Cloud Native 解决方案。如果您只有 1 个集群(第一个是免费的),则成本或多或少相同
只是对 GKE Anthos 的更正。我认为您谈论的是 Anthos 上的 Cloud Run,是的,它类似于 Cloud Run,但在 GKE 上使用 KNative 来管理容器,而且它也是无服务器的。但是 GKE 可以处理有状态的部署,正如您使用 odoo 所需要的那样
推荐阅读
- python - 如何从 Bitbucket 存储库中的多个头之一安装带有 Pip 的 Python 模块?
- c++ - Pthread段错误在main中使用指向变量的指针
- typescript - 有没有办法在 TypeScript 的界面中记录字段?
- python - 连接每个字典值中的字符串列表
- python - sympy 输出中的文本注释
- c# - FromBody 属性
- php - 前端查看目录中的文件并单击删除
- ios - Swift - 单击按钮后重新启动动画
- string - 将状态数据从 store 访问到字符串 vue.js
- c++ - 如果迭代器未被插入无效,则使用 std::find 和 C::insert() 线程安全