web-dev-qa-db-ja.com

Docker作成エラー「ファイル './docker-compose.yml'で、サービス 'punjab'は文字列ではなくマッピングである必要があります。」

Docker-compose.ymlファイルで奇妙なエラーが発生します。

スタックパンジャブ接続マネージャー、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ファイルを解析しましたが、ファイルは正しくフォーマットされています。

6

理論的にはファイル形式は正しいように見えるかもしれませんが、間違っていることがいくつかあります。

彼らです:

  1. 正しい構文であるため、depends_onの代わりにdepends-onを使用してください。

  2. ベストプラクティスとして、image: punjabのように画像に通知する前に空白スペースを使用してください。

  3. パンジャブサービスのportsおよびlinksでは、コロンを忘れます:

  4. イメージejabberdおよびpunjabは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
11