如何修复我的 docker-compose.yml? - 预期 <block end>,但发现 '<block mapping start>'
Posted
技术标签:
【中文标题】如何修复我的 docker-compose.yml? - 预期 <block end>,但发现 \'<block mapping start>\'【英文标题】: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
【问题讨论】:
我认为您缺少服务:像这里一样的标签docs.docker.com/compose/gettingstarted/… 【参考方案1】:对我来说,问题是行的缩进不够。 我在发生问题的行中添加了一个选项卡,并在此选项卡的旁边进一步依赖。
【讨论】:
【参考方案2】:在我的情况下,由于在服务名称(如 mysql)之前缺少空格而导致的错误。希望这些信息可以帮助到别人!
【讨论】:
对我来说,这是一个额外的空间 空格和引号的错误使用是一样的。您可以在运行容器之前验证 Online YAML Parser 上的文件。这就是我所做的,在发生重大变化之后。【参考方案3】:以后,您可以使用这个website 来检查它有什么问题,然后随时修复它。
编辑:
所以你在使用 docker-compose 文件时遇到的问题如下:
你没有在版本后添加services:和
如果你想要最新的图像,你不必传递 :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
【讨论】:
您发布的代码没有通过您推荐的解析器。 ` 错误:解析“以上是关于如何修复我的 docker-compose.yml? - 预期 <block end>,但发现 '<block mapping start>'的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 docker-compose.yml 和 ecs-cli 将 EBS 卷附加到我的容器