Skip to content

chore: base が Playwright のブラウザを取得直後に捨てている。arm64 には動く Chromium が入らない #220

Description

@takemi-ohama

何を見つけたか

base イメージのビルドは Playwright のブラウザを取得した直後に捨てており、残るのは副作用のフォントだけになっている。 containers/base/Dockerfile の利用者側の RUN は次の順で動く。

npx playwright install --with-deps chromium;   # :222 ブラウザを ~/.cache/ms-playwright へ入れる
sudo rm -rf /tmp/* ~/.cache ...                 # :226-227 直後に消す

Playwright の既定の置き場は ~/.cache/ms-playwright なので、入れたブラウザはイメージに残らない。 残るのは --with-deps が入れた 86 パッケージのほうで、その中に fonts-wqy-zenhei(中国語フォント)が含まれる。これが #161 の原因である(apt-cache rdepends --installed fonts-wqy-zenhei の Reverse Depends は空で、依存としては誰からも要求されていない)。

arm64 では、動作する Chromium がそもそも入らない。 google-chrome-stable は amd64 のときだけ足され(Dockerfile の if [ "$arch" = "amd64" ])、両アーキで入る chromium-browser は Ubuntu の snap スタブで、コンテナの中では起動しない。

playwright-kit は実行時に自前で入れる設計である(確認済み)。 devbasex/ai-plugins の plugins/playwright-kit/skills/playwright-kit-ops/templates/run.sh と scripts/init_project.sh は、.venv が無ければ uv sync + playwright install chromium を初回に実行する。templates/runtime-README.md も「初回は uv sync と playwright install chromium が自動実行されます (数分)」と書いている。したがって、消されているブラウザのキャッシュは playwright-kit の利用者には影響しない。

どこで見つけたか

決めること

論点 案
ビルド時の npx playwright install を残すか 消すなら --with-deps の扱いに注意が要る。 --with-deps が入れた fonts-liberation(Arial / Times New Roman の metric 互換)と libnss3 などの共有ライブラリは、#161 の直し方(Arial → Liberation Sans)と Chromium の動作が前提にしている。ブラウザの取得だけをやめ、依存パッケージは明示で apt に足す形が要る
ブラウザをイメージに残すか 残すなら PLAYWRIGHT_BROWSERS_PATH を ~/.cache の外(例: /opt/ms-playwright)へ向けて、クリーンアップで消えないようにする。イメージは約 150 MB 増える
arm64 の Chromium chromium-browser(snap スタブ)を入れるのをやめ、arm64 では Playwright の Chromium か、chromium の deb を使う形にする

決定

ブラウザはイメージに残す。 PLAYWRIGHT_BROWSERS_PATH=/opt/ms-playwright にしてクリーンアップの対象外とし、arm64 でも Playwright の Chromium を使う。chromium-browser(snap スタブ)は apt から外す。

なぜこの変更の範囲外なのか

PLAN63(#161 / #160)の受け入れ条件は、fontconfig の解決先と 6 パッケージの追加だけを対象にしている。現象レイヤー(ブラウザが起動しない・ダウンロードが無駄になる)も修正レイヤー(ブラウザの導入方法とクリーンアップの範囲)もフォントとは別である。#161 の本文も「本 issue には含めない」と明記している。

fonts-wqy-zenhei の削除は、この課題でも行わない。 #161 が実測付きで結論している。削除しても OS 既定の 65-nonlatin.conf が残るため sans-serif は日本語にならず(タイ語の Loma か IPAPGothic へ落ちる)、中国語のページを豆腐にするだけになる。

直さないと何が起きるか

  • base のビルドが毎回 100 MB 超のブラウザを取得して捨てる。ビルド時間と帯域が無駄になる
  • arm64(Apple Silicon)のコンテナでは、システムの Chromium を使う道具が動かないままになる。playwright-kit は実行時に自前で入れるため影響を受けないが、それ以外の経路(スクリーンショット・PDF 生成)は使えない
  • --with-deps の副作用で入るフォントが増え続ける余地が残る

由来

issue #161 の「決めること」 / PLAN63(issues/old/PLAN63_base-image-rendering.md)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions