Как исправить мою докер-композицию.в формате YML? - ожидал, но нашел.

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

Кажется, в моем файле yml есть проблема с отступом. Я прочитал здесь несколько других вопросов и попробовал различные схемы отступов. Я все еще не могу заставить его работать. Я намеренно удалил имена env/pws перед публикацией этого вопроса.

version: '2'
  ghost:
    image: ghost:latest
    container_name: ghost-blog  #Specify a custom container name, rather than a generated default name.
    environment:
      - NODE_ENV=production
      - MYSQL_DATABASE=db-name # Change {{db-name}}
      - MYSQL_USER=user # Change {{username}}
      - MYSQL_PASSWORD=pass # Change {{db-password}}
      # - "MAILGUN_USER={{mailgun-user}}" # Change {{mailgun-user}}
      # - "MAILGUN_PASSWORD={{mailgun-password}}" # Change {{mailgun-password}}
    volumes:
      - ./ghost:/var/lib/ghost # persist the data
    ports:
      - 2368:2368
    depends_on:
      - mysql # ensure that the database will start first
    restart: always

  mysql:
    image: mysql:latest
    container_name: ghost-db
    environment:
      - MYSQL_DATABASE=dbname # Change {{db-name}}
      - MYSQL_ROOT_PASSWORD=db-pass # Change {{root-password}}
      - MYSQL_USER=user # Change {{username}}
      - MYSQL_PASSWORD=sq-pass # Change {{db-password}}
    volumes:
      - ./db:/var/lib/mysql
    restart: always

2 ответов


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

EDIT:

таким образом, проблемы, которые у вас были с файлом docker-compose, были следующими:

  1. не добавлять услуги: после версии и

  2. вам не нужно проходить :последний тег если вы хотите последнее изображение, вы передадите тег когда вы хотите определенную версию изображения, и это делается между ""


что касается кода, он должен быть следующим:

version: '2'

services:
      ghost:
        image: ghost
        container_name: ghost-blog
        environment:
          - NODE_ENV=production
          - MYSQL_DATABASE=db-name
          - MYSQL_USER=user
          - MYSQL_PASSWORD=pass
      #   - "MAILGUN_USER={{mailgun-user}}"
      #   - "MAILGUN_PASSWORD={{mailgun-password}}" # Change {{mailgun-password}}
        volumes:
         - ./ghost:/var/lib/ghost # persist the data
        ports:
          - 2368:2368
        depends_on:
          - mysql # ensure that the database will always start first
        restart: always

      mysql:
        image: mysql
        container_name: ghost-db
        environment:
          - MYSQL_DATABASE=dbname # Change {{db-name}}
          - MYSQL_ROOT_PASSWORD=db-pass # Change {{root-password}}
          - MYSQL_USER=user # Change {{username}}
          - MYSQL_PASSWORD=sq-pass # Change {{db-password}}
        volumes:
          - ./db:/var/lib/mysql
        restart: always

в моем случае ошибка, вызванная отсутствием пространства перед именем службы (например, mysql). Надеюсь, эта информация может помочь кому-то!