VSCode Dev ContainerでCommand Failed

2022-12-10
山下 徳光
#
LINE
#
#

弊社ではVSCode Dev Containerを利用して開発を行っているのですが、ある日突然原因不明のエラーが発生して起動しなくなってしまいました...

Web上に明確な解決記事がなかったのでメモしておきます。

原因

早速原因をお伝えすると、VSCode Dev Containerで利用しているDockerfileのイメージがDockerHubから削除されていたことが原因でした...存在するイメージに置き換えて再度Dev Containerを起動することで解決しました 。

# 削除されてDockerHubに存在しないイメージ
FROM hasura/graphql-engine:v2.15.0-ce.debian

# DockerHubに存在するイメージ
FROM hasura/graphql-engine:v2.15.2-ce.debian

hasura/graphql-engineの特定バージョンに脆弱性が発見されたことによりイメージが削除されたようです。

Critical vulnerability impacting Hasura GraphQL Engine v2.10.0 to v2.15.1

エラーメッセージと原因が紐付かない解決し難いエラーだと思うので、詳細を記録しておきます。

現象

VSCode Dev Containerのコンテナを削除して再起動すると、以下のエラーが発生してDev Containerで起動しなくなった。

コマンド 'Dev Containers: Open Workspace in Container...' でエラー (Command failed: /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper.app/Contents/MacOS/Code Helper --ms-enable-electron-run-as-node /Users/example-user/.vscode/extensions/ms-vscode-remote.remote-containers-0.266.1/dist/spec-node/devContainersSpecCLI.js read-configuration --workspace-folder /Users/example-user/example-project --log-level debug --log-format json --config /Users/example-user/example-project/.devcontainer/devcontainer.json --include-merged-configuration --mount-workspace-git-root true) が発生しました

同様の構成の別プロジェクトは起動可能だが、Dev Containerで利用中のコンテナを削除すると起動できなくなることを確認。

調査

詳細なエラーメッセージが表示されていないため、エラーメッセージ中に記載されているコマンドをターミナルから実行すると、electronのエラーメッセージらしきものが表示された。

$ /Applications/Visual\ Studio\ Code.app/Contents/Frameworks/Code\ Helper.app/Contents/MacOS/Code\ Helper --ms-enable-electron-run-as-node /Users/example-user/.vscode/extensions/ms-vscode-remote.remote-containers-0.266.1/dist/spec-node/devContainersSpecCLI.js read-configuration --workspace-folder /Users/example-user/example-project --log-level debug --log-format json --config /Users/example-user/example-project/.devcontainer/devcontainer.json --include-merged-configuration --mount-workspace-git-root true
[1209/191141.924597:FATAL:electron_main_delegate_mac.mm(71)] Unable to find helper app

electron-builderのissueに近いエラーがあったので、VSCodeの設定異常やDockerのキャッシュを疑って、VSCodeのクリーンインストール・Dockerのイメージ・コンテナ・ボリュームをクリーンして再度Dev Containerの起動するもエラーは解決せず。

Error "Unable to find helper app" when "productName" and "exectuableName" set to different names · Issue #6962 · electron-userland/electron-builder

# VSCodeのクリーンインストール
# https://code.visualstudio.com/docs/setup/uninstall
rm -rf /Applications/Visual\ Studio\ Code.app
rm -rf $HOME/Library/Application Support/Code
rm -rf ~/.vscode

# Dockerのキャッシュ削除
docker system prune
docker images -aq | xargs docker rmi --force
docker builder prune
docker volume rm $(docker volume ls -qf dangling=true)

改めてDev Containerで開発しているその他のプロジェクトの状態を確認してみると、一部正常に起動できるプロジェクトがあることを確認。

Dockerfileのベースイメージのバージョンに差分を発見したため、問題のプロジェクトのDockerfileに指定しているイメージバージョンをDockerHubで検索すると、該当バージョンが削除されているを確認。

存在するバージョンに変更して再起動すると正常に起動した。

株式会社Grandreamでは、フルリモートであなたのスキルを活かし、活躍できるエンジニアを募集しております。 詳しくは採用ページをご確認いただき、お気軽にお問い合わせください。

株式会社グランドリームでは、AWSを駆使した開発からUI/UXデザインまで、Webアプリケーションに関するすべての要望に応えます。
まずは一度お気軽にご相談ください。

お問い合わせはこちら