docker-compose.ymlでERRORが発生した時の各対処方法

docker-compose up -dで立ち上げた時、様々なエラーが発生したので、そのエラー内容と対応方法をまとめました。

ERROR: yaml.parser.ParserError: while parsing a block mapping

内容

$ docker-compose up -d

ERROR: yaml.parser.ParserError: while parsing a block mapping
  in "./docker-compose.yml", line 1, column 1
expected <block end>, but found '<block mapping start>'
  in "./docker-compose.yml", line 18, column 2

1行目からyaml.parser.ParserErrorが発生しました。原因をdocker-compose.ymlファイルから探ってみます。

原因

version: "3.7"
services:
   app: # インデントがずれている!
    build:
      context: .
      dockerfile: Dockerfile

インデントは、半角空白2文字でしているはずが、1行だけ1文字でインデントをしてしまっています。この時に、yaml.parser.ParserErrorが発生します。

対応方法

version: "3.7"
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile

半角空白2文字で正しくインデントを揃えることで解決します。

ERROR: yaml.scanner.ScannerError: while scanning for the next token

内容

$ docker-compose up -d

ERROR: yaml.scanner.ScannerError: while scanning for the next token
found character '\t' that cannot start any token
  in "./docker-compose.yml", line 3, column 1

3行目でyaml.scanner.ScannerErrorが発生しました。原因をdocker-compose.ymlファイルの3行目から探ってみます。

原因

version: "3.7"
services:
	app: # インデントがタブになっている!
    build:
      context: .
      dockerfile: Dockerfile

空白でインデントをしているはずが、タブ文字でインデントをしてしまっています。この時に、yaml.scanner.ScannerErrorエラーが発生します。

対応方法

version: "3.7"
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile

タブ文字ではなく、半角空白文字でインデントを整えることで解決しました。

読むべき本