エラー内容
Windows10 + Docker desktop 3.2.xで
docker-compose up
あるいは
docker-compose build
した際に、ビルドで次のエラーが出てビルドが出来ない場合について。
failed to get console mode for stdout: The handle is invalid.
原因
docker-composeの問題のようです。
Docker desktop 3.1.0~3.3.0において issue#8186 として報告されており、含まれているdocker-composeの 1.29.1で修正リリースが予定されているようです。
Docker Compose release notes
対応
環境変数を指定して回避する
リリースされれば単純にバージョンアップで直ると思いますが、現時点ではビルド時に次の環境変数を指定して実行することで、一時的に回避できる可能性があります。
set COMPOSE_DOCKER_CLI_BUILD=0
docker-compose up --build --no-cache
※ COMPOSE_DOCKER_CLI_BUILD=1 だとアウトらしい。
※ 設定しても直らない場合もあるようです。
※ 修正版がリリースされたら設定するのをやめましょう。
VSCodeの場合
"terminal.integrated.env.windows": {
"COMPOSE_DOCKER_CLI_BUILD": "0"
},
設定したらVScodeを一度閉じて、開きなおしてください。
旧バージョンのDocker desktopを使う
環境変数を指定しても駄目な場合、下記から旧バージョンの3.0.0や3.0.4をダウンロードしてインストールして試してみてみてください。
Docker for Windows release notes