在容器停止之前使用 docker-compose 执行脚本

时间:2021-02-20 09:03:31

标签: docker-compose

假设我想在触发容器终止时执行清理脚本。我如何使用 docker-compose 解决这个问题?

这可以方便地为开发容器自动备份文件、数据库等。

1 个答案:

答案 0 :(得分:1)

docker 容器应该是 ephemeral

<块引用>

“短暂”是指容器可以被停止和销毁,然后重建并替换为绝对最小的设置和配置。

建立在这个概念的基础上 docker 本身并没有提供任何与关闭过程挂钩的东西。 docker-compose 建立在 docker 之上,也没有添加此类功能。

也许您可以docker方式重新思考您的问题,以更好地适应docker的预期用途。没有进一步的背景,很难说什么是好的解决方案,但也许以下方法之一可以帮助您:

  • docker stop 向容器中的主进程发送 SIGTERM 信号。您可以使用自定义入口点或主管进程来触发对 SIGTERM 的适当操作。这种方法需要自定义容器。使用 stop_signal attribute,您还可以配置要在您的 docker-compose.yml

    中发送的自定义信号
  • 如果您只想保留容器中的数据文件,只需 configuring the right volumes 就足够了

  • 您可以使用 docker events 来侦听 docker daemon 发出的任何类型的事件并对其采取行动