【问题标题】:Docker compose error "In file './docker-compose.yml', service 'punjab' must be a mapping not a string."Docker compose 错误“在文件 './docker-compose.yml' 中,服务 'punjab' 必须是映射而不是字符串。”
【发布时间】:2016-10-04 13:47:32
【问题描述】:

我的 docker-compose.yml 文件中出现一个奇怪的错误。

我已经为 stack punjab 连接管理器、ejabberd 和 mysql 准备了一个 docker-compose 文件。

下面是 docker-compose.yml 文件

version: '2'
services:
  punjab:
    image:punjab
    ports
     - 5280:5280
    links
     - ejabbberd:ejabberd
  ejabberd:
    image: ejabberd
    depends-on:
      - mysql
    links:
      - mysql:mysql
  mysql:
    image:mysql

当我从命令行和我拥有 docker-compose.yml 文件的同一目录运行命令 docker-compose up 时,我收到以下错误。

错误:在文件 './docker-compose.yml' 中,服务 'punjab' 必须是映射而不是字符串。

我也使用 yamllint 解析了 yml 文件,并且文件格式正确。

【问题讨论】:

    标签: docker xmpp ejabberd docker-compose punjab


    【解决方案1】:

    虽然理论上文件格式可能看起来是正确的,但有些地方是错误的。

    他们是:

    1. 使用depends_on 而不是depends-on,因为这是正确的语法。

    2. 为获得最佳实践,请在通知图像之前使用空格,例如:image: punjab

    3. 在旁遮普语服务的portslinks 上,您忘记了冒号:

    4. 图像 ejabberdpunjab 不存在于 Docker Hub 上,因此它们必须存在于您的本地存储库中。

    这是一个使用docker-compose.yml的示例:

    version: '2'
    services:
      punjab:
        image: punjab
        ports:
          - "5280:5280"
        links:
          - ejabberd
    
      ejabberd:
        image: ejabberd
        depends_on:
          - mysql
        links:
          - mysql
    
      mysql:
        image: mysql
    

    【讨论】:

    • 谢谢@Caue...depends_on 是问题所在,缺少分号:ejabberd 和 punjab 是我本地 docker 机器上的图像。
    猜你喜欢
    • 2021-07-07
    • 2018-06-02
    • 2017-05-11
    • 2021-08-30
    • 2018-12-28
    • 2018-09-23
    • 1970-01-01
    • 2017-01-26
    • 2017-12-17
    相关资源
    最近更新 更多