在文件'./docker-compose.yml'中,服务'proxy-nginx'必须是映射而不是字符串?

Posted

技术标签:

【中文标题】在文件\'./docker-compose.yml\'中,服务\'proxy-nginx\'必须是映射而不是字符串?【英文标题】:In file './docker-compose.yml', service 'proxy-nginx' must be a mapping not a string?在文件'./docker-compose.yml'中,服务'proxy-nginx'必须是映射而不是字符串? 【发布时间】:2018-07-23 05:09:12 【问题描述】:

我有以下docker-compose.yml 文件:

    version: '3'

    services:
      proxy-nginx:
        build:./nginx
      ports:
        - 80:80

当我运行 `docker-compose up 控制台日志时:

In file './docker-compose.yml', service 'proxy-nginx' must be a mapping not a string.

This answer 建议在端口周围使用引号:

    version: '3'

    services:
      proxy-nginx:
        build:./nginx
      ports:
        - "80:80"

还尝试了更多缩进端口:

    version: '3'
    services:
      proxy-nginx:
        build:./nginx
        ports:
          - 80:80

但结果还是一样。有什么想法吗?

【问题讨论】:

build: ./nginx 而不是build:./nginx?缺少空格? Docker compose error "In file './docker-compose.yml', service 'punjab' must be a mapping not a string."的可能重复 【参考方案1】:

尝试正确缩进端口

    version: '3'
    services:
      gogs-nginx:
        build: ./nginx
        ports:
        - "80:80"

我认为问题在于解析器认为 ports 是另一个服务,因为它具有误导性的缩进。不过我不能怪它。

【讨论】:

尝试过并将其添加到问题中。还有其他想法吗? 我用端口值周围的引号更新了答案。我之前也尝试过这样做,但由于某种原因它仍然无法正常工作。所以我从 docker 站点 (docs.docker.com/compose/gettingstarted/…) 复制了一个 sn-p 并对其进行了更改,现在它可以工作了...

以上是关于在文件'./docker-compose.yml'中,服务'proxy-nginx'必须是映射而不是字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Docker-Compose.yml配置讲解

如何在 AWS Elastic Container Service 中使用现有的 docker-compose.yml 文件?

“docker-compose”命令为 docker-compose.yml 文件设置路径

docker-compose.yml说明和编写

我应该把 docker-compose.yml 放在哪里

使用 docker-compose.yml 自动删除容器