在 Swarm 模式下使用 Docker 在崩溃时自动重启 FastAPI

Restart FastAPI Automatically on Crash using Docker in Swarm Mode

Python 程序可能会因一些未捕获的异常而崩溃(可能是由于糟糕的编码、动态类型等)。

我想如果我使用 Docker Swarm 模式启动我的应用程序的多个实例(并使用适当的日志记录来了解错误并稍后纠正)那么如果一个实例崩溃,我的应用程序仍然会运行(因为我使用了多个实例)。同时,我可以重启崩溃的实例。

如果我在这里做出了任何错误的假设,请告诉我。

FastAPI's Documentation中提到如果在Docker Swarm模式下崩溃了我们可以重启程序。但是,它并没有说明如何去做(至少我找不到它)。

谁能告诉我如何在 Swarm 模式下使用 Docker 在崩溃时自动重启 FastAPI。

Docker Swarm ensures 实例(容器)的数量与您在撰写文件中声明的一样多。

例如,你可以声明你想要有六个 replicas 的 FastAPI:

docker-compose.yml

services:
  fast_api:
    deploy:
      mode: replicated
      replicas: 6

如果您的(六个)FastAPI 容器之一崩溃,Swarm 将自动启动一个新容器以再次确保六个容器 运行。