メインコンテンツにスキップ

Docker

はじめに

Dockerfile.noble は、Docker 環境で Playwright スクリプトを実行するために使用できます。このイメージには、Playwright ブラウザブラウザのシステム依存関係が含まれています。Playwright パッケージ/依存関係はイメージに含まれていないため、別途インストールする必要があります。

使用方法

この Docker イメージは、Microsoft Artifact Registry に公開されています。

情報

この Docker イメージは、テストおよび開発目的でのみ使用することを意図しています。この Docker イメージを信頼できないウェブサイトへのアクセスに使用することはお勧めしません。

イメージをプルする

docker pull mcr.microsoft.com/playwright:v1.51.0-noble

イメージを実行する

デフォルトでは、Docker イメージはブラウザを実行するために root ユーザーを使用します。これにより、root では利用できない Chromium サンドボックスが無効になります。信頼できるコード(例えば、エンドツーエンドテスト)を実行し、別のユーザーを管理する手間を避けたい場合は、root ユーザーでも問題ありません。ウェブスクレイピングまたはクローリングの場合、Docker コンテナ内に別のユーザーを作成し、seccomp プロファイルを使用することをお勧めします。

エンドツーエンドテスト

信頼できるウェブサイトでは、ブラウザで実行されるコードを信頼しているため、別のユーザーを作成せずに root を使用できます。

docker run -it --rm --ipc=host mcr.microsoft.com/playwright:v1.51.0-noble /bin/bash

クローリングとスクレイピング

信頼できないウェブサイトでは、ブラウザを起動するために、seccomp プロファイルと組み合わせて別のユーザーを使用することをお勧めします。コンテナ内、または Docker イメージをベースイメージとして使用している場合は、そのために adduser を使用する必要があります。

docker run -it --rm --ipc=host --user pwuser --security-opt seccomp=seccomp_profile.json mcr.microsoft.com/playwright:v1.51.0-noble /bin/bash

seccomp_profile.json は、サンドボックス付きで Chromium を実行するために必要です。これは、追加のユーザー名前空間クローン作成権限を持つ デフォルトの Docker seccomp プロファイルです

{
"comment": "Allow create user namespaces",
"names": [
"clone",
"setns",
"unshare"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"includes": {},
"excludes": {}
}
注意

Chrome を使用する場合は、--ipc=host を使用することをお勧めします (Docker ドキュメント)。Chrome はこのフラグがないとメモリ不足になる可能性があります。

CI での使用

設定例については、継続的インテグレーションガイドを参照してください。

リモート接続

ホストシステムまたは別のマシンでテストを実行したまま、Docker で Playwright Server を実行できます。これは、サポートされていない Linux ディストリビューションやリモート実行シナリオでテストを実行する場合に役立ちます。

Playwright Server の実行

Docker で Playwright Server を起動する

docker run -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"

サーバーへの接続

リモート Playwright サーバーに接続する方法は 2 つあります

  1. @playwright/test で環境変数を使用する
PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:3000/ npx playwright test
  1. 他のアプリケーション用の browserType.connect() API を使用する
const browser = await playwright['chromium'].connect('ws://127.0.0.1:3000/');

ネットワーク設定

Docker コンテナ内からローカルサーバーにアクセスする必要がある場合

docker run --add-host=hostmachine:host-gateway -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"

これにより、hostmachine はホストの localhost を指すようになります。ローカルサーバーにアクセスするときは、テストで localhost の代わりに hostmachine を使用する必要があります。

注意

リモートでテストを実行する場合は、テスト内の Playwright のバージョンが Docker コンテナで実行されているバージョンと一致していることを確認してください。

イメージタグ

利用可能なすべてのイメージタグ を参照してください。

現在、次のタグでイメージを公開しています

  • :v1.51.0 - Ubuntu 24.04 LTS (Noble Numbat) ベースの Playwright v1.51.0 リリース Docker イメージ。
  • :v1.51.0-noble - Ubuntu 24.04 LTS (Noble Numbat) ベースの Playwright v1.51.0 リリース Docker イメージ。
  • :v1.51.0-jammy - Ubuntu 22.04 LTS (Jammy Jellyfish) ベースの Playwright v1.51.0 リリース Docker イメージ。
注意

可能な場合は、常に Docker イメージを特定のバージョンにピン留めすることをお勧めします。Docker イメージ内の Playwright のバージョンがプロジェクト/テストのバージョンと一致しない場合、Playwright はブラウザの実行可能ファイルを見つけることができません。

ベースイメージ

現在、次の Ubuntu バージョンに基づいてイメージを公開しています

  • Ubuntu 24.04 LTS (Noble Numbat)、イメージタグには noble が含まれます
  • Ubuntu 22.04 LTS (Jammy Jellyfish)、イメージタグには jammy が含まれます

Alpine

Firefox と WebKit のブラウザビルドは、glibc ライブラリ用に構築されています。Alpine Linux および musl 標準ライブラリに基づいたその他のディストリビューションはサポートされていません。

独自のイメージを構築する

Docker 内で Playwright を実行するには、Node.js、Playwright ブラウザ、および ブラウザのシステム依存関係がインストールされている必要があります。次の Dockerfile を参照してください

FROM node:20-bookworm

RUN npx -y playwright@1.51.0 install --with-deps