我有三个相对小的Django应用,这些应用将与一个Postgres数据库共享,但我希望将其维护为分开的应用,因为它们依赖不同的数据库表子集并完成完全不同的功能。需要在VPS上部署这一设置的最佳方式是什么?我找到的许多博客贴等帖子似乎自动假设所有应用都需要独立的Docker容器,但那样似乎似乎太浪费了,因为所有应用都运行同样的栈。

在你的情况下,最好的方式可能是使用一个Docker容器运行整个Web服务,并将其中一个容器用于Postgres数据库。但是,你需要考虑到将应用解耦到最小化容器数量的其他因素,如:

  1. 分离:将每个应用都放在一个不同的Docker容器中,可以更好地分离它们,并使其更容易开发和维护。
  2. 伸缩:如果某一应用突然需要更多资源,你可以单独伸缩该应用的容器,而不干扰其他应用。
  3. 部署:将应用包装在单独的容器中可以使其更容易部署和维护。
  4. 安全:独立的容器可以更好地隔离应用,防止它们之间的安全问题。

所以,即使用一个Docker容器跑一堆栈,确实会比独立容器节省一些内存。使用一个容器跑整个应用,一个跑数据库,感觉是更合理的选择。

最合适的可能是使用一个docker-compose文件来管理多个容器的状态和配置。这样可以实现独立的应用和数据库并可以更细致地控制每个容器的配置。