首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >app初始化失败后如何停止docker容器启动?

问app初始化失败后如何停止docker容器启动?
EN

Stack Overflow用户
提问于 2019-01-11 16:42:42
回答 3查看 375关注 0票数 1

我们有一个flask服务应用程序,它连接到mysql数据库以获取数据。这个flask应用程序是通过docker容器中的gunicorn服务器。我们正在使用docker-compose来做同样的事情。

当应用程序启动时,我们建立到数据库的连接。如果与数据库的连接失败(3次尝试),应用程序将无法初始化并退出。但是我注意到容器启动了。当我的应用无法启动时,如何导致容器也无法启动?

EN

回答 3

Stack Overflow用户

发布于 2019-01-11 16:48:42

使用restart:no重启策略有3个选项。

代码语言:javascript
复制
- restart: no
- restart: always
- restart: on-failure
票数 0
EN

Stack Overflow用户

发布于 2019-01-11 16:53:52

如果它真的启动了(不是永久重新启动),请尝试在入口点脚本的顶部添加trap 'exit' ERR。

票数 0
EN

Stack Overflow用户

发布于 2019-01-11 16:55:44

首先,您必须告诉docker-compose,您希望所有容器在退出主服务时停止执行。这是使用--abort-on-container-exit命令行参数完成的。假设你有两个服务:

docker-compose.yml

代码语言:javascript
复制
version: '3'
services:
  db:
    ...
  flask:
    ...

那么命令行看起来就像这样:

代码语言:javascript
复制
docker-compose up --exit-code-from flask --abort-on-container-exit

因此,告诉您的flask服务是主服务,并且您不想在它退出时继续。

其次,将flask主进程(PID 1)配置为在无法连接到数据库时退出(最好使用非零退出代码)。就是这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54142981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档