【问题标题】:How do I fix my docker-compose.yml? - expected <block end>, but found '<block mapping start>'如何修复我的 docker-compose.yml? - 预期 <block end>,但发现 '<block mapping start>'
【发布时间】:2018-03-27 22:35:12
【问题描述】:
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 文件中似乎存在缩进问题。我在这里阅读了其他一些问题,并尝试了各种缩进方案。我仍然无法让它工作。在发布此问题之前,我特意删除了环境名称/密码。

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

【问题讨论】:

标签: docker yaml


【解决方案1】:

对我来说,问题是行的缩进不够。 我在发生问题的行中添加了一个选项卡,并在此选项卡的旁边进一步依赖。

【讨论】:

    【解决方案2】:

    在我的情况下,由于在服务名称(如 mysql)之前缺少空格而导致的错误。希望这些信息可以帮助到别人!

    【讨论】:

    • 对我来说,这是一个额外的空间
    • 空格和引号的错误使用是一样的。您可以在运行容器之前验证 Online YAML Parser 上的文件。这就是我所做的,在发生重大变化之后。
    【解决方案3】:

    以后,您可以使用这个website 来检查它有什么问题,然后随时修复它。

    编辑:

    所以你在使用 docker-compose 文件时遇到的问题如下:

    1. 你没有在版本后添加services:

    2. 如果你想要最新的图像,你不必传递 :latest 标签,当你想要特定版本的图像时,你将传递标签,这是在 " "


    代码应该是这样的:

    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
    

    【讨论】:

    • 您发布的代码没有通过您推荐的解析器。 ` 错误:解析“”第 3 行第 2 列中的块映射时:ghost: ^ 预期 ,但在“”第 21 行找到“” ,第 3 列:mysql:`
    • @JAstuccio 我已经编辑了我的代码。请看我制作的cmets
    • 谢谢。它通过了解析器,但是当我复制你的新代码并更改密码时,我仍然遇到同样的错误。
    • @JAstuccio 是的,因为我已经在本地对其进行了测试,并且没有抛出任何错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2019-09-30
    • 1970-01-01
    • 2021-07-04
    • 2021-09-25
    • 2017-10-16
    • 2023-03-25
    相关资源
    最近更新 更多