首页 > 解决方案 > 预期“MappingStart”,得到“SequenceStart”

问题描述

我正在尝试开始使用 Docker,但我似乎在每一步都遇到了问题。看到很多模糊的错误。我创建了一个 ASP.NET Core 应用程序并启用了 Docker 支持,它按预期工作。

我现在正在尝试创建一个 SQL 数据库服务,所以我编辑了 compose 文件,如下所示:

version: '3.4'

services:
  sql.data:
    sql.data:
    image: microsoft/mssql-server-linux
    environment:
      - MSSQL_SA_PASSWORD=Pass@word
      - ACCEPT_EULA=Y
      - MSSQL_PID=Developer
    ports:
      - "5434:1433"
  webapplication2:
    image: ${DOCKER_REGISTRY}webapplication2
    build:
      context: .
      dockerfile: WebApplication2/Dockerfile

如此处所述:https ://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/multi-container-microservice-net-applications/database-server-container

这是输出:

error : (Line: 7, Col: 7, Idx: 107) - (Line: 7, Col: 7, Idx: 107): Expected 'MappingStart', got 'SequenceStart' (at Line: 7, Col: 7, Idx: 107).
1>Done building project "docker-compose.dcproj" -- FAILED.

问题是什么?到目前为止,我已经看过这里:https ://developercommunity.visualstudio.com/content/problem/248013/docker-project-fails-to-build-after-upgrade-to-vis.html - 删除破折号似乎没有帮助。

YAML 似乎在这里解析:http: //yaml-online-parser.appspot.com/。如果我删除 SQL.Data 服务,那么它会按预期工作。

标签: .netdocker

解决方案


这似乎是VS/Dockertools 的一个错误。您可以使用另一种表示法:

version: '3.4'

services:
  sql.data:
    sql.data:
    image: microsoft/mssql-server-linux
    environment:
      MSSQL_SA_PASSWORD : Pass@word
      ACCEPT_EULA : Y
      MSSQL_PID : Developer
    ports:
      - "5434:1433"
  webapplication2:
    image: ${DOCKER_REGISTRY}webapplication2
    build:
      context: .
      dockerfile: WebApplication2/Dockerfile

请注意,冒号 (:) 的两侧必须有一个空格。


推荐阅读