有没有办法在一个 heroku 应用程序中部署两个容器?

Is there a way to deploy two containers in one heroku app?

有没有办法在 heroku 上的一个应用中部署两个容器?

我有这个问题是因为我需要将两个 Java 应用程序上传到 heroku,我在应用程序中配置了一个数据库。这两个应用程序,一个API和一个数据库更新进程需要访问同一个数据库。

如果没有办法在heroku上上传两个容器来解决这种情况,你会怎么做?必须上传一个远程数据库,一个基于 cron 作业和 shell 脚本更新该数据库的进程以及一个访问更新数据库的 API?

是否可以选择在一张图片中同时包含申请和工作?

可以在 Web Dyno 上只公开一个端口,因此如果两个应用程序都需要 HTTP 连接,则不可能将它们部署在一起。

Option Web 和 Worker Dynos

API 处理 HTTP 传入流量,而后端 (DB) 应用程序作为 worker 在后台运行:它们通过队列进行通信,例如 RabbitQM,或者您可以使用 Redis(相同的概念:一个应用生产,另一个应用消费)

选项 2 Web Dynos

在 2 个不同的 web Dynos 上独立部署 2 个应用程序,然后使用安全令牌通过 HTTPS 进行通信。

将两个应用合二为一 Docker 图片

尽管从技术上讲这是可能的,但您不会找到太多关于它的帮助(和同意),因为它违反了 Docker 原则。

如果您真的想尝试一下,我认为您可以启动这两个应用程序(在不同的端口上)并仅公开 API 一个用于传入流量。