如何修复docker-compose.yml? - 预期<block end>,但找到'<block mapping start>'

JAs*_*cio 12 yaml docker

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
Run Code Online (Sandbox Code Playgroud)

我的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
Run Code Online (Sandbox Code Playgroud)

Ser*_*giu 19

将来,您可以使用此网站检查它有什么问题,然后在旅途中修复它.

编辑:

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

  1. 您没有添加服务:版本和之后

  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
Run Code Online (Sandbox Code Playgroud)


Kiw*_*Lau 7

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

  • 空格和引号的错误使用也是一样的。在运行容器之前,您可以在[Online YAML Parser](http://yaml-online-parser.appspot.com/)上验证该文件。这就是我在发生重大变化后所做的事情。 (2认同)