如何在不重启整个容器的情况下重启Linux容器内的Azure Function?
无需重启容器重启Linux容器内Azure Function的操作方法
方法1:配置变更触发热重启
Azure Functions宿主进程默认监听函数根目录下配置文件的修改事件,仅需变更文件修改时间即可触发宿主自动重启,不影响容器运行状态:
- 进入运行中的容器
docker exec -it <你的容器ID/容器名称> bash - 触碰
host.json文件更新其修改时间touch /home/site/wwwroot/host.json
等待3-5秒即可完成函数宿主重启,所有函数会重新加载。
- 进入运行中的容器
方法2:手动重启宿主进程
若热重启监听被关闭,可直接杀掉函数宿主进程,容器默认配置的进程拉起机制会自动重启该进程,容器不会退出:
- 进入运行中的容器
docker exec -it <你的容器ID/容器名称> bash - 查询函数宿主进程PID
ps aux | grep "Microsoft.Azure.WebJobs.Script.WebHost" | grep -v grep | awk '{print $2}' - 终止查询到的进程
kill <上一步输出的PID>
进程终止后会被自动拉起,5秒内即可完成重启。
- 进入运行中的容器
注意:不要终止容器内PID为1的进程,否则会导致容器直接退出,上述查询命令过滤后的进程不会命中1号进程,可放心操作。
内容的提问来源于stack exchange,提问作者Tobias von Falkenhayn
相关产品推荐
相关产品推荐

