Docker
はじめに
Dockerfile.noble は、Docker 環境で Playwright スクリプトを実行するために使用できます。このイメージには、Playwright ブラウザ と ブラウザのシステム依存関係 が含まれています。Playwright パッケージ/依存関係はイメージに含まれていないため、別途インストールする必要があります。
使い方
この Docker イメージは、Microsoft Artifact Registry に公開されています。
この Docker イメージは、テストおよび開発目的でのみ使用することを意図しています。信頼できないウェブサイトを閲覧するためにこの Docker イメージを使用することはお勧めしません。
イメージをプルする
docker pull mcr.microsoft.com/playwright/python:v1.50.0-noble
イメージを実行する
デフォルトでは、Docker イメージは root
ユーザーを使用してブラウザを実行します。これにより、root では利用できない Chromium サンドボックスが無効になります。信頼できるコード (例えば、エンドツーエンドテスト) を実行し、別のユーザーを管理する手間を避けたい場合は、root ユーザーでも問題ない場合があります。ウェブスクレイピングやクローリングの場合、Docker コンテナ内に別のユーザーを作成し、seccomp プロファイルを使用することをお勧めします。
エンドツーエンドテスト
信頼できるウェブサイトでは、ブラウザで実行されるコードを信頼できるため、別のユーザーを作成せずに root を使用できます。
docker run -it --rm --ipc=host mcr.microsoft.com/playwright/python:v1.50.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/python:v1.50.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.50.0-noble /bin/sh -c "npx -y playwright@1.50.0 run-server --port 3000 --host 0.0.0.0"
サーバーへの接続
- 同期
- 非同期
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.connect("ws://127.0.0.1:3000/")
from playwright.async_api import async_playwright
async with async_playwright() as p:
browser = await p.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.50.0-noble /bin/sh -c "npx -y playwright@1.50.0 run-server --port 3000 --host 0.0.0.0"
これにより、hostmachine
がホストの localhost を指すようになります。ローカルサーバーにアクセスするときは、テストで localhost
の代わりに hostmachine
を使用する必要があります。
リモートでテストを実行する場合は、テスト内の Playwright バージョンが Docker コンテナで実行されているバージョンと一致していることを確認してください。
イメージタグ
利用可能なすべてのイメージタグ を参照してください。
現在、次のタグでイメージを公開しています
:v1.50.0
- Ubuntu 24.04 LTS (Noble Numbat) ベースの Playwright v1.50.0 リリース Docker イメージ。:v1.50.0-noble
- Ubuntu 24.04 LTS (Noble Numbat) ベースの Playwright v1.50.0 リリース Docker イメージ。:v1.50.0-jammy
- Ubuntu 22.04 LTS (Jammy Jellyfish) ベースの Playwright v1.50.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 を実行するには、Python、Playwright ブラウザ、および ブラウザのシステム依存関係 がインストールされている必要があります。次の Dockerfile を参照してください
FROM python:3.12-bookworm
RUN pip install playwright==@1.50.0 && \
playwright install --with-deps