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: 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. :)

4 Answers

Your indentation is broken in the grafana section. Everything after image is spaced in two extra spaces.

3

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

You've got your answer already, but I just stumbled on another (in hindsight obvious) issue: double quotes in a value when it is quoted with double quotes.

E.g.:

... environment: PASSWORD: "a"123" ... 

To fix, one should use single quotes:

... environment: PASSWORD: 'a"123' ... 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.