Docker作曲家,约束 - 找不到预期的关键

时间:2017-04-11 14:20:36

标签: docker docker-compose docker-swarm

我们使用docker CE(最新)和docker composer版本3.我有3个服务的.yml但是我想将grafana约束到swarm的主人。 添加约束时我得到了

  

yaml:第32行:找不到预期的密钥   脚本是这样的:

version: '3'
services:
  influxdb:
    image: "influxdb:latest"
    volumes:
      - /mount/set/influxdb:/var/lib/influxdb
    ports:
      - "5076:5076"
    networks:
      - production

  kapacitor:
    image: "kapacitor:latest"
    environment:
      KAPACITOR_HOSTNAME: kapacitor
      KAPACITOR_INFLUXDB_0_URLS_0: http://influxdb:5086
    volumes:
      - /mount/set/kapacitor:/var/lib/kapacitor
    ports:
      - "9092:9092"
    networks:
      - production

  grafana:
    image: "grafana/grafana:latest"
      ports:
        - "7000:7000"
      networks:
        - production
      deploy:
        placement:
          constraints: [node.role == manager]
      volumes:
        - /iSCSIDisk/grafana/grafana.ini:/etc/grafana/grafana.ini
        - /iSCSIDisk/grafana/lib:/var/lib/grafana
      environment:
        GF_SECURITY_ADMIN_PASSWORD: secretsecret

      networks:
        production:
          external: true

我多次梳理脚本并且找不到任何错误的原因,我可能会忽略某些东西,我检查了非空格等,但找不到任何东西,我检查了其他有关相同错误的文章,并且我似乎也没有任何丢失的括号或重复。非常感谢您的帮助,谢谢。 :)

3 个答案:

答案 0 :(得分:6)

你的缩进在grafana部分被打破了。 image之后的所有内容都分成两个额外的空格。

答案 1 :(得分:2)

与docker-compose.yml文件相关的常见错误取决于额外的空格。 如果使用vi或vim,则可以使用:%s/\s\+$//e命令删除所有多余的空格。

答案 2 :(得分:0)

如果您对环境变量使用字典类型声明,就会发生这种情况。

就我而言,我不得不更改格式

environment:      
  DATASTORE_EMULATOR_HOST: "${DATASTORE_ENDPOINT}:${DATASTORE_PORT}"

environment:
  - DATASTORE_EMULATOR_HOST=${DATASTORE_ENDPOINT}:${DATASTORE_PORT}

对我来说唯一改变的是升级我的 docker 桌面安装