При запуске «docker-compose up» выдается ошибка «ОШИБКА: yaml.scanner.ScannerError: значения сопоставления здесь недопустимы» - PullRequest
0 голосов
/ 20 мая 2019

При запуске «docker-compose up» выдается ошибка

ОШИБКА: yaml.scanner.ScannerError: значения сопоставления здесь недопустимы в "./docker-compose.yml", строка 8, столбец 14

Мой файл создания докера, как показано ниже;

postgres:
  image: postgres:9.4.21
  environment:
    POSTGRES_USER: myusername
    POSTGRES_PASSWORD: myPass
    ports:
      -'5432:5432'
    volumes:
          ~/.docker-volumes/mobydock/postgresql/data:/var/lib/postgresql/data

      redis:
        image: redis: 5.0.5
        ports:
          - '6379:6379'
          volumes:
             ~/.docker-volumes/mobydock/redis/data:/var/lib/redis/data

            mobydock:
              build: .
              command: gunicorn -b 0.0.0.0:8000 --reload --access-logfile - "mobydock.app:create_app()"
              environment:
                PYTHONUNBUFFERED: true
                links:
                  - postgres
                  - redis
                volumes:
                  - .:/mobydock
                  ports:
                    - '8000:8000'

Я пытался изменить некоторые знаки перед путем к томам.

Я хочу создать файл Docker с изображениями postgres и redis. Я новичок в Docker и делаю это в первый раз.

Ответы [ 3 ]

0 голосов
/ 20 мая 2019

Ваша основная проблема заключается в несоблюдении синтаксиса YAML - если вы новичок в YAML, вы можете найти множество ресурсов в Интернете, таких как:

  • , вы должны использовать два пробела для отступа каждогоДля отображения
  • при перечислении элементов (таких как тома или порты) необходимо использовать - для каждого элемента в списке
  • при использовании строк с символами YAML (например, :), лучшепроцитировать их (то есть image: "redis:5.0.5" вместо image: redis: 5.0.5

У вас также есть несколько проблем, связанных с синтаксисом docker-compose:

  • Тома не являютсяправильный список, и вам лучше использовать абсолютный путь вместо относительного (не используйте ~/path в Compose), например:

    volumes:
      - /home/user/.docker-volumes/mobydock/redis/data:/var/lib/redis/data
    
  • В вашем файле image будет читаться как элемент volumes, т. е. ваш отступ неверен. Вместо использования:

    # YAML will interpret image as being under the volume key
    volumes:
      - /home/user/.docker-volumes/mobydock/redis/data:/var/lib/redis/data
      image: [...]
    

    Вы должны иметь:

    # mind the space indentation !
    volumes:
      - /home/user/.docker-volumes/mobydock/redis/data:/var/lib/redis/data
    image: [...]
    

    Эта ошибка отступа такжеприсутствует в большинстве других элементов, проверьте синтаксис Docker Compose длязнать порядок каждого элемента.

Вы можете использовать YAML Linter такой как этот , чтобы помочь решить эти проблемы синтаксиса YAML.

0 голосов
/ 20 мая 2019

volumes - это список, поэтому вы должны написать:

volumes:
  - ~/.docker-volumes/mobydock/redis/data:/var/lib/redis/data

Кроме того, ваш файл имеет неправильный отступ, его следует записать так:

postgres:
  image: "postgres:9.4.21"
  environment:
    POSTGRES_USER: myusername
    POSTGRES_PASSWORD: myPass
  ports:
    -'5432:5432'
  volumes:
    - ~/.docker-volumes/mobydock/postgresql/data:/var/lib/postgresql/data

redis:
  image: "redis:5.0.5"
  ports:
    - '6379:6379'
  volumes:
    - ~/.docker-volumes/mobydock/redis/data:/var/lib/redis/data

mobydock:
  build: .
  command: 'gunicorn -b 0.0.0.0:8000 --reload --access-logfile - "mobydock.app:create_app()"'
  environment:
    PYTHONUNBUFFERED: true
  links:
    - postgres
    - redis
  volumes:
    - .:/mobydock
  ports:
    - '8000:8000'
0 голосов
/ 20 мая 2019
postgres:
  image: postgres:9.4.21
  environment:
    POSTGRES_USER: myusername
    POSTGRES_PASSWORD: myPass
  ports:
    -'5432:5432'
  volumes:
    - ~/.docker-volumes/mobydock/postgresql/data:/var/lib/postgresql/data

redis:
  image: redis: 5.0.5
  ports:
    - '6379:6379'
  volumes:
    - ~/.docker-volumes/mobydock/redis/data:/var/lib/redis/data

mobydock:
  build: .
  command: gunicorn -b 0.0.0.0:8000 --reload --access-logfile - "mobydock.app:create_app()"
  environment:
    PYTHONUNBUFFERED: true
  links:
    - postgres
    - redis
  volumes:
    - .:/mobydock
  ports:
    - '8000:8000'

yaml чувствителен к отступам

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