docker-compose yaml.parser.ParserError - PullRequest
       21

docker-compose yaml.parser.ParserError

1 голос
/ 13 марта 2019

С помощью следующего docker-compose.yml я всегда получаю синтаксическую ошибку, которую не могу объяснить (я не вижу различий в строках 2 и 3 между двумя docker-compose.ymls)

---
version: '2'
  services:
    app-module:
      container_name: app-module:
      env_file: ./app-module:.env
      image: registry.x/app/app-module:latest
      network_mode: "bridge"
        ports:
        - "30303:30303"
      volumes:
      - type: volume
        source: node-volume
        target: /datadir
      - ./data:/data
      - ./log:/log

Сообщение об ошибке:

ERROR: yaml.parser.ParserError: while parsing a block mapping
  in "./docker-compose.yml", line 2, column 1
expected <block end>, but found '<block mapping start>'
  in "./docker-compose.yml", line 3, column 3

Я не вижу никаких синтаксических различий с другими рабочими файлами.

Это рабочий docker-compose.yml, который я использовал как источник вдохновения для моего файла.:

---
version: '2'
services:
  app-node:
    container_name: app-node
    env_file: ./app-node.env
    image: registry.x/group/app-node:latest
    network_mode: "bridge"
    ports:
      - "7990:7990"
      - "7999:7999"
    volumes:
      - ./data:/data
      - ./log:/log

Доказательство:

$ docker-compose config
services:
  app-node:
    container_name: app-node
    environment: {}
    image: registry.x/group/app-node:latest
    network_mode: bridge
    ports:
    - 7990:7990/tcp
    - 7999:7999/tcp
    volumes:
    - ...app-node/Test/data:/data:rw
    - ...app-node/Test/log:/log:rw
version: '2.0'

1 Ответ

3 голосов
/ 13 марта 2019

Пространства материи в YAML.У вас есть два пробела до services:, которых там быть не должно.Вы говорите YAML, что services в version, но version уже имеет значение.

Это разница между:

foo: bar
  in_foo: bar

, которая не будет работать, потому что in_foo находится в foo, и:

foo: bar
not_in_foo: bar

, который будет работать, потому что not_in_bar не в foo.

В качестве альтернативы, это может быть допустимым синтаксисом (но тогда docker-compose не удастся, потому что ожидает строку в version):

version:
  services:
    foo: bar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...