node.js-docker swarm服务中的Nodejs应用程序,更新无效

简短如何在docker swarm中更新复制的nodejs应用程序?

预期的行为:触发更新后,服务将接收某种形式的信号,例如:SIGINT或SIGTERM

实际发生的事情:什么都没有…没有信号,没有更新的服务.我必须删除该服务,然后使用更新的图像再次创建它.

我正在使用dockerode更新服务. Docker API的文档of the subject in question已损坏(例如,一个子菜单无法展开子菜单:UpdateConfig)…使得很难知道我是否缺少任何其他规范.

如果我运行命令:docker service update< SERVICE>发生预期的行为.

最佳答案
每次更新时,ForceUpdate标志必须增加一…,以便在不对映像进行版本控制时进行更新.

    const
    serviceOptions    = { ... },service           = this.docker.getService(serviceName),serviceInspected  = await this.serviceInspector.inspectService(serviceName)

    serviceOptions.registryAuthFrom         = 'spec'
    // if we do not specify the correct version,we can not update the service
    serviceOptions.version                  = serviceInspected.Version.Index
    // it's not documented by docker that we need to increase this force update flag by one,each time we attempt to update...
    serviceOptions.TaskTemplate.ForceUpdate = serviceInspected.Spec.TaskTemplate.ForceUpdate + 1

    const response = await service.update(serviceOptions)
    response.output.Warnings && this.log.info(data.output.Warnings)

仍然无法从容器中记录SIGTERM信号,但至少现在我可以更新服务了

相关文章

最近一直在开发Apworks框架的案例代码,同时也在一起修复Apw...
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。...
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,...
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...