compose.yml
ファイル。次のようになります。
version: '2'
services:
discovery-microservice:
build: discovery-microservice
context: /discovery-microservice/target/docker
dockerfile: Dockerfile
ports:
- "8761:8761"
実行中に次のエラーが表示されます。
yaml.scanner.ScannerError: mapping values are not allowed here
in "C:\...\docker-compose.yml", line 5, column 14
私が見るところ、フォーマットに何も問題はありません。空白がありません。私の全体的な目標は、開発モードのdocker-composeファイルを指定して、さまざまなモジュールのターゲットディレクトリを指すようにすることです。
ここで何が間違っていますか?
文字通り、数秒後に解決策を見つけました。 「build」の後に「discovery-microservice」を削除する必要があります。
version: '2'
services:
discovery-microservice:
build:
context: ./discovery-microservice/target/docker
dockerfile: Dockerfile
ports:
- "8761:8761"
また、相対パスのコンテキストで「./」を使用できます。 :)
わかりました、同様の問題をデバッグするために約3時間浪費しました。
下のエラーが表示されたら
ERROR: yaml.scanner.ScannerError: mapping values are not allowed here
in ".\docker-compose.yml", line 2, column 9
その間にスペースが必要だから
version: '3' <-これは間違っています
バージョン: '3' <-これは正しい。
また、Eclipseを使用している場合は、YEdit YAMLエディタープラグインをインストールしてください。
そして、version
の後に:
を忘れました
version '2'
間違っているのは、ここにあることです:
build: discovery-microservice
4つのスペースでインデントされたキーbuild
を持つマッピングを開始します。そのキーの値は、discovery-microservice
で始まるスカラーで、key: value
のペアがあるかどうかに応じて次の行に続く可能性があります同じインデントレベルで
このような複数行のスカラー内で許可されていないのは、引用符で囲まれていない:
andが異なるインデントレベルにあることです。まさにあなたが持っているものです。
context
とは異なるレベルでインデントされたbuild
を参照するパーサーは、同じ行に(context
として)後に続くことができないスカラー文字列discovery-microservice context
を書き込むことを想定しています。
回答で行ったようにビルド後にdiscovery-microservice
を削除することとは別に、この有効なYAMLを作成する理由は次のとおりです(ただし、異なる意味で、おそらくdocker composeには無意味です)。
services:
discovery-microservice:
build: "discovery-microservice
context: /discovery-microservice/target/docker"
そして
services:
discovery-microservice:
build: discovery-microservice
context: /discovery-microservice/target/docker"
Docker-composeバージョン2ファイルの場合、build
キーはマッピング(上記の「ソリューション」のようにスカラーではなく)を想定しているため、これを解決する正しい答えが得られます。
同じエラーメッセージが表示されたのに、解決策が異なっていたため、答えを持ち込みました。
元のdocker-compose.yml
volumes: mongo:
このスレッドのすべてのアイデアを試した後、私はdocker-composeドックに行き、ボリュームが次のように構成されている必要があることに気付きました。
volumes:
mongo:
これに出くわす他の人はこれで終わりです。
こんにちは、与えられた答えへの更なる更新....それはバージョンについて特にではありません: '2.0'行
エラー:yaml.scanner.ScannerError:ここでは値のマッピングは許可されていません
何らかの形式のエラーがあることを意味します。
私はそれを手に入れました、そしてそれは私のdocker-composeファイルにタブがなかったからでした
version: '3.0'
services:
mysql:
image: ...
の代わりに
version: '3.0'
services:
mysql:
image: ...
画像行にインデントタブがないことに注意してください
外部(ホスト)サーバー上の特定のパスにマップされたボリュームが必要でした。 docker-compose.yml
の最上位のvolumes
エントリの下に配置しようとしました。 docker-composeファイルのドキュメントを見て、そのタイプのボリュームはそこにないことに気付きました。代わりに、コンテナ定義内のvolumes
エントリの下のみに移動します。例えば。:
version: "3.7"
services:
web:
image: my_custom_web_image
build: ./app
volumes:
- ./app/subdir:/usr/src/app/subdir
今日、同様の問題が発生しました。docker-compose.yml
ファイルの構文エラーが原因で、同じエラーが発生しました。
version: '2'
services:
// Add your services here
discovery-microservice:
build: discovery-microservice
context: ./discovery-microservice/target/docker
dockerfile: Dockerfile
ports:
- "8761:8761"
この行を削除// Add your services here
は私の問題を修正しました
version: '2'
services:
discovery-microservice:
build:
context: ./discovery-microservice/target/docker
dockerfile: Dockerfile
ports:
- "8761:8761"
これが同様の問題を抱えている人の助けになることを願っています。
もう1つの考えられる原因は、ファイルの最後にあるタブです。これは今日学びました。