Docker:优雅地停止 django 服务器

2023-12-10

我在用着docker and docker-compose。 里面docker-compose.yml我有启动 django 服务器的命令:

command: ["./run/web.sh"]

在 json 格式中,命令应在 exec 模式下运行。里面web.sh:

#!/usr/bin/env bash
exec python manage.py runserver

当我试图停止服务时docker-compose stop它等待了 10 秒(默认超时),然后终止服务。在我发现的日志中project_web_1 exited with code 137.

如何优雅地停止 django runserverdocker stop?


In your docker-compose.yml文件,设置stop_signal to SIGINT:

django:
  build: .
  command: ["./run/web.sh"]
  stop_signal: SIGINT

我自己也为此苦苦挣扎了一段时间……

启动 runserver 时,您会注意到它显示“使用 CONTROL-C 退出服务器”。我认为这意味着 Django 的 runserver 是为了处理SIGINT(ctrl-c) 而不是SIGTERM(泊坞窗发送的信号)。对我来说,更改 Docker 发送到 Django 的信号比尝试处理更容易SIGTERM在我的脚本中并优雅地退出运行服务器。

请注意,这取决于使用exec在你的web.sh脚本,以便信号不会被 shell 吃掉 - 但我看到你已经这样做了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker:优雅地停止 django 服务器 的相关文章

随机推荐

  • Win10 Powershell - 简单的 If/Elseif 取决于条件顺序?

    我正在尝试编写一个部署脚本来检查操作系统主要版本 然后基于该版本运行命令 我可以抓住它就好 System Environment OSVersion Version Major 但是当我尝试在 if elseif 语句中使用它时 我总是得到
  • 高分辨率移动设备 1080px(Xperia Z 等)的媒体查询

    我正在尝试掌握不同设备的媒体查询 我尝试了我的新索尼 Xperia Z 手机 由于分辨率高 可以以全尺寸网站格式显示 如何添加媒体查询来重新调整网格大小和格式 如标准手机比例 在 Xperia 上 字体也太小而无法阅读 需要显示得更大 对于
  • 为什么需要“string DB 20, 22 dup('?')”中的“20, 22”?

    我一直用 for 定义字符串DB 20 22有一段时间不知道为什么 我读到第一个字节是缓冲区大小 第二个字节保存字符串使用的字节数 但我不知道这两个值是否都是强制性的 例如 当我定义一个字符串并想要将寄存器指向它时 我必须使用 2 来跳过这
  • 关于在需要常量表达式的上下文中使用左值常量表达式的问题

    include
  • Spring Boot 应用程序 - 服务器上下文路径

    我使用 Spring Initializer 嵌入式 Tomcat Thymeleaf 模板引擎生成了一个 Spring Boot Web 应用程序 并将其打包为可执行 JAR 文件 使用的技术 Spring Boot 2 0 0 M6 J
  • 即使安装 m2e + DWM 后,Eclipse Indigo SR2 EE 中也没有 Maven 菜单项

    我已经安装了 Eclipse Indigo SR2 EE Eclipse Java EE IDE for Web Developers Version Indigo Service Release 2 Build id 20120216 1
  • 我应该信任哪个编译器?

    这将是一个新手问题 但我正在尝试做一个小练习C语言 不C 我遇到了一些问题 假设我想在方法中使用数组 其大小取决于参数之一 void someFunc int arSize char charArray arSize DO STUFF 当我
  • 抛出或尝试捕获

    决定是否添加时的一般经验法则是什么throws方法的子句或使用try catch 从我自己读到的内容来看 throws当调用者破坏了契约 传递的对象 并且try catch当在方法内部执行的操作期间发生异常时应使用 它是否正确 如果是这样
  • 根据 WooCommerce 中其他运输方式的可用性隐藏运输方式

    我试图根据其他运输方式 通过其 ID 的可用性来隐藏运输方式 以实现稍微复杂的运输设置 根据我发现的其他代码片段 对于其他用例 排除州或仅显示免费送货 如果有 我想出了这个 function hide duplicate shipping
  • 具有不同对象的 TableView (javafx)

    我目前正在开发一个应用程序 用于观察谁负责不同的患者 但是我无法解决如何用不同的对象类型填充表格的问题 下面是我的 TableView 控制器的代码 UITableView 最终将有四种不同的对象类型 所有对象类型都将从数据库中检索 我希望
  • 如何从排序向量中有效地删除一个值?

    假使 假设vec是可移动和可复制对象的排序向量 删除所有匹配元素的最有效方法是什么value 这是正确且最有效的方法吗 auto lb std lower bound vec begin vec end value vec erase lb
  • MySQL 数据库问号而不是希伯来字符..?

    我正在尝试使用 PHP 和 MySQL 构建一个购物车 我在MySQL中的数据库是utf8 我在数据库中的表是utf8 如何使用希伯来语字符 我能够通过执行以下操作来解决此问题 数据库排序规则必须是utf8 general ci 该表与希伯
  • 如何在 Chrome 扩展程序中禁用同源策略?

    也许有一些设置可以在扩展上下文中禁用此功能 由于我正在开发一个扩展 所以我自己有责任不射中自己的目标 在开发浏览器扩展时 摆弄这个完全不合理的安全问题是非常令人沮丧的 我不想通过全局禁用它来使整个浏览器变得不安全 仅适用于在manifest
  • 我想在 JavaScript 中验证我的必填字段不为空

    希望这是基本的 JavaScript 而且答案很简单 因为我是新手 我只是想确保所有必填字段都不为空 然后用户才能继续 在我的
  • 单击下载链接时文件损坏

    我尝试使用php强制下载图像jpg文件 我已经实现了以下代码 html a href a
  • 如何在 VSCode 中导出设置

    正如此处发布的如何导出设置 大家都坚持使用Settings Sync 如果不是插件强迫我使用GitHub 在我的电脑上明确拒绝 那就没问题了 有什么方法可以手动执行此操作 或者重定向插件以使用替代的 git 存储库来实现此目的 对于 Win
  • 文本不包含任何用“sel”标记的字符 tkinter

    我最近读到了受人尊敬的布莱恩 奥克利 Bryan Oakley 写的答案 Tkinter 将行号添加到文本小部件 其中他展示了有关解决问题的示例代码 当我尝试处理该代码并且它工作正常直到我复制或粘贴某些内容时 即我按Ctrl C or Ct
  • 构建时 GMSPlaceField 错误 - Swift 4.2

    我有一个正在使用的应用程序Google 的地点自动完成功能 所以我一直在遵循提供的示例代码 我已将 GooglePlace pod 添加到我的 podfile 中 因为我使用的是相同的 全屏控制 我正在使用他们的示例代码 在我尝试构建项目之
  • postInvalidate() 的作用是什么?

    有什么用postInvalidate 安卓中的功能 我在很多地方都看到过这个功能 当我谷歌搜索时 我得到了这么多 后无效 在 UI 线程上发布无效请求 我不知道那里的 无效请求 是什么意思 有人可以详细解释这里发生了什么吗 每个从 View
  • Docker:优雅地停止 django 服务器

    我在用着docker and docker compose 里面docker compose yml我有启动 django 服务器的命令 command run web sh 在 json 格式中 命令应在 exec 模式下运行 里面web