关闭容器时,有什么方法可以执行bash脚本吗?
用例:
当启动 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/