Windows + Docker desktop 3.2.x でdocker-composeのビルドが エラーになる

カテゴリー
Docker Windows 開発環境

エラー内容

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の場合

User and Workspace Settings

"terminal.integrated.env.windows": {
"COMPOSE_DOCKER_CLI_BUILD": "0"
},

設定したらVScodeを一度閉じて、開きなおしてください。

旧バージョンのDocker desktopを使う

環境変数を指定しても駄目な場合、下記から旧バージョンの3.0.0や3.0.4をダウンロードしてインストールして試してみてみてください。
Docker for Windows release notes

参考