コンテナの GUI をブラウザで見る

Dev Container に生きた X server は無いが、再ビルドなしで GUI 窓をブラウザに出せる。

Xvfb :99  →  x11vnc :5900  →  websockify + noVNC :8081  →  ブラウザ

ヘッドレスでGUI検証 の SDL_VIDEODRIVER=dummy はロジックの検証用で、鑑賞はできない。 見る必要が出たらこちらへ切り替える。

  • x11vnc は WSLg の WAYLAND_DISPLAY を見て Wayland と誤判定し即 exit する。 env -u WAYLAND_DISPLAY -u XDG_SESSION_TYPE -u XDG_RUNTIME_DIR で外す。 パッケージを入れただけでは必ずここで落ちる(再ビルドしても変数は残るので、再ビルドでは直らない)
  • nohup ... & はツール実行の終了で道連れに死ぬ。setsid で切り離す
  • 生存確認をプロセス数で数えない。 websockify は接続ごとに子を作る(実測で親1・子5)。 listen しているポートで判定する
  • 稼働中のコンテナへ apt-get install x11vnc novnc websockify を直接入れればその場で動く。 再ビルドは「次に環境を作り直しても残す」ための作業であって、今動かすための条件ではない
  • ホストのブラウザから届くのは VS Code が Dev Container に接続している間だけ (→ Windowsホストからコンテナのアプリを起動する)

正典:verschlimmsweeper/DESIGN.md §運用メモ。関連 ヘッドレスでGUI検証/devコンテナで日本語を出す