Docker撰写错误"在文件' ./ docker-compose.yml',service'旁遮普'必须是映射而不是字符串。"

时间:2016-06-04 15:56:38

标签: docker xmpp ejabberd docker-compose punjab

我的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时,我收到以下错误。

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

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

1 个答案:

答案 0 :(得分:10)

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

他们是:

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

  2. 为了获得最佳效果,请在通知图片之前使用空格,如:image: punjab

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

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

  5. 这是使用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