Docker Swarm Compose 放置约束布尔或条件

3

在Docker Compose的放置约束中,是否可以指定布尔或条件? 我正在寻找能够模拟此语法的内容:

services:
  service1:
    deploy:
      placement:
        constraints:
          - <condition1> || <condition2>
3个回答

3

不可以实现。你不能做你想做的事情。


3

我已经寻找了一年半,但是 Swarm 仍然不支持“或运算”。

因此,当前的等效操作是将除条件之外的所有其他标签分组为“不相等”操作。

如果你想要 label == (1 | 2) ,则可以使用以下方式:

constraints:
  - label != 3
  - label != 4
  ... 
  - label != n

这看起来很糟糕,但目前在 swarm 中是唯一可行的方式。


-3

这不是一个布尔型的AND吗? - Meidan Alon
根据Docker文档,“多个约束条件会查找满足每个表达式的节点(AND匹配)。” 所以我认为是的。 - Hemant Singh
好的,我正在寻找一个布尔型OR。 - Meidan Alon
我没有找到任何内容,请尝试使用单竖线,如(“none”|”on-failure”|”any”)。因为在docker-compose中有其他设置将其视为:--restart-condition 当条件满足时重新启动(“none”|”on-failure”|”any”)(默认为“any”) - Hemant Singh
看到这个被投票否决感觉有点奇怪,因为你知道,你不能做OR逻辑,但是这个答案包含了所有你需要实现所需结果的方法。使用负逻辑来创建正确的AND语句,以等效于一个OR。或者使用许多可以在放置约束中进行测试的属性,包括基于相同OR条件设置的标签。if isHere OR isManager label = 'ManagerHere',然后在约束条件中测试该标签即可。 - LostNomad311
1
如果你刚才给出的评论是答案,我可能不会将其投票否决。但事实上,它非常具有误导性。(话虽如此,我并不理解你的评论。你不能只是将所有的OR改写为AND。你想要添加代表OR条件的新标签吗?) - Caesar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接