Postgresdocker集装箱与托pipe解决scheme

我习惯以“传统”的方式构buildweb应用程序,但是我试图用docker来包裹我的头。 如果我在一个容器中运行postgres以及我的python web应用程序,这是否像启动一个数字海洋服务器并从头开始安装postgres一样? 如何使用docker中的postgres数据库来处理备份,容错等?

作为替代,我通常在Heroku或AWS上使用托pipe的postgres。 这不是解决了我在docker中托pipepostgres时遇到的很多问题吗? 开发人员是否确实在docker中运行postgres,或者他们通常喜欢使用外部托pipe服务吗?

现在明智的做法是在Docker中只保留无状态服务或一次性作业,而不是像数据库那样放置任何有状态的服务。

这篇来自中间层的最近一篇文章有​​更多关于为什么还不是这样的细节。

一个问题是配合技术还不能满足有状态服务的高要求。 去引用:

第一个挑战是资源隔离。 市场上的许多容器编排解决scheme为资源分配提供了最佳方法,包括内存,CPU和存储。 虽然这对无状态应用程序可能是好的,但是对于有状态的服务来说,这可能是灾难性的,在这种情况下,性能的下降可能导致客户交易或数据的丢失。

另一个是有状态的数据库已经被build立了不同于容器使用的假设,并且对它们进行了大量的优化。 再次引用:

当今大多数有状态数据库技术最初是为非集装箱世界devise的。 操作说明对技术非常具体,有时可能是特定版本。 尝试将容器业务stream程平台的通用基元映射为有状态服务通常是耗时且容易出错的操作。

你可以完全在Docker中运行你的postgres实例。 但是这需要一些工作来处理备份,容错等。

在我的公司,我们已经决定不要把数据库放到Docker中,至less现在是这样。