我们有一个flask服务应用程序,该应用程序连接到mysql数据库以获取数据。该烧瓶应用程序通过docker容器中的gunicorn服务器进行服务器。我们正在使用docker-compose。
应用程序启动时,我们将连接到数据库。如果与数据库的连接失败(尝试3次),则应用程序将无法初始化并退出。但要注意容器已启动。当我的应用无法启动时,如何使容器也无法启动?
答案 0 :(得分:0)
使用restart:no
重新启动策略有3个选项。
- restart: no
- restart: always
- restart: on-failure
答案 1 :(得分:0)
如果它确实开始(而不是永久重新启动),请尝试在入口点脚本的顶部添加trap 'exit' ERR
。
答案 2 :(得分:0)
首先,您必须告诉docker-compose
您希望所有容器在主服务退出时停止执行。这是使用--abort-on-container-exit
命令行参数完成的。假设您有2种服务:
docker-compose.yml
version: '3'
services:
db:
...
flask:
...
然后命令行将类似于:
docker-compose up --exit-code-from flask --abort-on-container-exit
因此,告诉您的flask
服务是主要服务,并且您不想在退出时继续操作。
第二,您将flask
主进程(PID 1
)配置为在无法连接数据库时退出(最好使用非零退出代码)。就是这样。