如果您需要将某个服务部署在指定的节点上,可以使用 constraint 关键字来实现这个功能。
Note 部署约束只对新创建容器生效,对老容器变更配置时不起作用。

在下面的示例中,服务指定部署在 node1 上。

web:
    image: 'nginx:latest'
    restart: always
    environment:
        - 'constraint:aliyun.node_index==1'
    ports:
        - 80
    labels:
        aliyun.scale: 2

容器服务支持以下表达式:

表达式 说明
constraint:aliyun.node_index==1 指定部署到 node1。
constraint:aliyun.node_index!=1 不部署到 node1。
constraint:aliyun.node_index==(1|2|3) 指定部署到 node1 或者 node2 或者 node3。
constraint:aliyun.node_index!=(1|2|3) 部署到除 node1、node2、node3 的其他机器上。
affinity:image==~redis 尽量部署到有 Redis 镜像的机器上。支持填写镜像全称,如 registry.cn-hangzhou.aliyuncs.com/xxx/xxx
affinity:service!=~redis 尽量不部署到有 Redis 服务的机器上。参见服务部署约束(affinity:service)