Docker 撰写错误 "In file './docker-compose.yml', service 'punjab' must be a mapping not a string."

Docker compose error "In file './docker-compose.yml', service 'punjab' must be a mapping not a string."

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

我已经为 stack punjab 连接管理器、ejabberd 和 mysql.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 从命令行和我有 docker-compose.yml 文件的同一目录时,我得到以下错误。

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

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

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

他们是:

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

  2. 为了最佳实践,在通知图像之前使用空格 space,例如: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