Usamos docker CE (último) y docker composer versión 3. Tengo un .yml para 3 servicios, pero quiero restringir grafana al maestro del enjambre. Al agregar la restricción obtengo
yaml: línea 32: no se encontró la clave esperada El script es este:
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: trueRevisé el guión varias veces y no pude encontrar ninguna razón para el error, puede que esté pasando por alto algo, verifiqué si no había espacios, etc., y no pude encontrar nada, revisé otros artículos sobre el mismo error, y no Parece que también faltan corchetes o duplicados. Su ayuda será muy apreciada, gracias. :)
Su sangría está rota en la sección de grafana. Todo lo que sigue a image está espaciado en dos espacios adicionales.
Es un error común con el archivo docker-compose.yml que depende de los espacios adicionales. Si usa vi o vim, puede eliminar todos los espacios adicionales con el comando :%s/\s\+$//e .
Esto puede suceder si está utilizando declaraciones de tipo de diccionario para sus variables de entorno.
En mi caso tuve que cambiar el formato
environment: DATASTORE_EMULATOR_HOST: "${DATASTORE_ENDPOINT}:${DATASTORE_PORT}"a
environment: - DATASTORE_EMULATOR_HOST=${DATASTORE_ENDPOINT}:${DATASTORE_PORT}Lo único que cambió para mí fue actualizar la instalación de mi escritorio docker