更新服务限制

时间:2019-07-16 10:40:42

标签: bash docker swarm

我设置了两台服务器,其中一台名为prod,一台为staging。两台服务器都在同一个Docker群中。 我想编写bash脚本,以将一个docker swarm服务从生产移动到登台服务器。 我已经在节点管理器中运行了这2个bash脚本。

#!/usr/bin/env bash

# move_service_to_prod.sh

/usr/bin/docker service update \
  --constraint-rm "node.hostname==staging" \
  --constraint-rm "node.hostname==prod" \
  --constraint-add "node.hostname==prod" \
some_service

#!/usr/bin/env bash

# move_service_to_staging.sh

/usr/bin/docker service update \
  --constraint-rm "node.hostname==staging" \
  --constraint-rm "node.hostname==prod" \
  --constraint-add "node.hostname==staging" \
some_service

如您所见,脚本删除了所有约束,然后添加了新约束。 当我启动第一个脚本时,有时会为服务创建2个prod约束。 就像“ docker inspect some_service”的输出一样

  "Placement": {
    "Constraints": [
      "node.hostname==staging",
      "node.hostname==staging"
    ],

有时无法正常工作-服务仍在登台计算机上运行。 如果将再有几个环境(例如staging1,staging2等),请编写代码 会更大。

是否有可靠的bash oneliner来消除所有限制并添加适当的服务限制?

0 个答案:

没有答案