我们使用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
我多次梳理脚本并且找不到任何错误的原因,我可能会忽略某些东西,我检查了非空格等,但找不到任何东西,我检查了其他有关相同错误的文章,并且我似乎也没有任何丢失的括号或重复。非常感谢您的帮助,谢谢。 :)
答案 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 桌面安装