We using docker CE(latest) and docker composer version 3.I have a .yml for for 3 services but I want to constraint grafana to the master of the swarm. When adding the constraint I get
yaml: line 32: did not find expected key Tthe script is this:
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
I combed over the script several times and could not find any reason for the error, I may be overlooking something, I checked for non-spaces etc, and could not find anything, I checked other articles regarding the same error, and I don't seem to have any missing brackets or duplicates too. Your help will be much appreciated, thank you. :)
Your indentation is broken in the grafana section. Everything after image is spaced in two extra spaces.
It is common error with docker-compose.yml file depend on extra spaces.
If you use vi or vim you can remove all extra spaces with :%s/\s\+$//e command.
This can happen if you are using dictionary type declarations for your environment variables.
In my case I had to change the format
environment:
DATASTORE_EMULATOR_HOST: "${DATASTORE_ENDPOINT}:${DATASTORE_PORT}"
to
environment:
- DATASTORE_EMULATOR_HOST=${DATASTORE_ENDPOINT}:${DATASTORE_PORT}
The only thing that changed for me was upgrading my docker desktop installation