关闭容器时,有什么方法可以执行bash脚本吗?

用例:

  • 有一个容器,正在运行 nginx + php-fpm
  • 有一个 foo (项目)容器,该容器使用卷并链接到
  • ubuntu 14.04用作所有图像的基础

  • 当启动 foo 时,它将在vhost配置文件中抓图以供Nginx使用(以及将项目添加到webroot等)。

    我们想要实现的是,当 foo 停止时,它将进行清理(删除vhosts文件,从webroot删除项目等)。

    设置 / etc / rcX / KX-cleanup 不起作用。

    似乎可以探索的唯一其他选择是-在入口脚本中以无限循环的方式包含一些bash-sigterm-listener(这会浪费宝贵的CPU周期吗?)

    最佳答案

    如“Docker and the PID 1 zombie reaping problem”和“Trapping signals in Docker containers”中所述,docker在docker stop / docker kill上发送SIGCHLD或SIGTERM。

    如果foo应用程序可以监视这些信号,或者foo进程可以提供回调,则它可以触发您想要的任何脚本。

    process.on('SIGTERM', function() {
      console.log('shutting down...');
    });
    

    注意:



    注意:很快(2015年第四季度),docker 1.9将允许您的容器使用新的STOPSIGNAL dockerfile指令指定要响应的停止信号。参见PR 15307

    关于php - Docker容器关闭脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32940887/

    10-15 03:27
    查看更多