我在同一主机上运行大约 30 个不同的站点,每个站点都使用 docker-compose 进行管理。其中一些使用 Nginx,一些使用 Apache。然后是一个暴露在互联网上的反向代理容器,它运行 Nginx,有一堆虚拟主机,并将流量重定向到正确的容器。那 30 个不同的网站只是我尝试各种想法,他们没有很多客户。
我知道使用 docker-compose 对于生产使用是不明智的,因为使用新版本关闭和重新打开容器仍然需要时间(<3 秒)。我也知道 docker swarm 和 K8S,如果这 30 个不同站点中的任何一个变得足够大,我将使用它们。到那时,我可能会重组一切以实现零停机部署。但我问的是不同的。
我仍然想使用 docker compose 管理普通容器,因为它非常方便,而且因为我只有 1 个节点,所以运行 K8S 将是多余的,并且不会真正实现零停机部署。但是,我想不时更换反向代理容器(可能每周 1-3 次),并且我不希望单个容器有任何停机时间,因为所有这 30 个站点都会受到影响。对于单个站点,我可以接受 <3 秒的停机时间,因为大多数站点根本不会改变,而那些确实是实验性的,但是我开始对反向代理的停机时间 <3 秒感到不舒服。
那么有没有办法让我在不停机的情况下更换反向代理容器?真正简单和轻量级的东西?不必使用 docker compose,但仍应整体使用容器。我正在考虑这些:
- 使用 KIND(Kubernetes IN Docker),它在单个主机上运行并创建容器,以便它们显示为节点。这需要 800MB-1GB 的 RAM,所以它是不可取的
- 无限期保持反向代理容器,更改其中的配置,重新启动 Nginx(<1 秒停机时间),但这严重违背了容器的目的,我不能再不关心容器了,这是最初的我想将应用程序容器化的原因。
还有其他选择吗?