首页 > 解决方案 > docker-compose 是否支持 docker-compose.yml 中的放置约束

问题描述

在撰写文件的文档中 https://docs.docker.com/compose/compose-file/

我找到了constraints作为在 swarm 中指定节点的方法的参考

deploy:
  placement:
    constraints:
      - node.role == manager
      - engine.labels.operatingsystem == ubuntu 14.04

但它不影响启动docker-compose up

这是我的 docker-compose.yml

version: '3'
services:
  redis:
    image: redis
    deploy:
      placement:
        constraints:
          - node.hostname==ryabchenko-system

这是我的蜂群

:~$ sudo docker node ls
ID                            HOSTNAME               STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
9q4y21c0u15rqp0x10164xzm9     ryabchenko-system      Ready               Active                                  18.06.1-ce
se717p88485s22s715rdir9x2 *   speechanalytics-test   Ready               Active              Leader              18.09.3

speechanalytics-test我跑

:~$ sudo docker-compose -p ra -f docker-compose.yml up

结果容器打开了speechanalytics-test,但我希望它打开ryabchenko-system

标签: dockerdocker-compose

解决方案


仅在 swarm 模式下支持放置约束。该docker-compose命令仅适用于单个主机,因此不支持。docker stack deploy如果您想使用该功能,您必须迁移您的 compose 文件以供 swarm 使用和使用。


推荐阅读