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

Docker

はじめに

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

使用方法

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

情報

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

イメージをプルする

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

イメージを実行する

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

エンドツーエンドテスト

信頼できるWebサイトでは、ブラウザ上で実行されるコードを信頼しているため、個別のユーザーを作成せずにrootを使用しても問題ありません。

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

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

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

docker run -it --rm --ipc=host --user pwuser --security-opt seccomp=seccomp_profile.json mcr.microsoft.com/playwright/python: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": {}
}

PlaywrightをDockerで実行する場合、以下の構成を推奨します。

  1. --init Dockerフラグの使用は、PID=1のプロセスに対する特別な処理を避けるために推奨されます。これはゾンビプロセスの一般的な原因です。
  2. Chromiumを使用する場合、--ipc=hostを使用することをお勧めします。これがないと、Chromiumがメモリ不足になりクラッシュする可能性があります。このオプションの詳細については、Docker docsを参照してください。
  3. Chromiumの起動時に奇妙なエラーが発生した場合、ローカルで開発中にdocker run --cap-add=SYS_ADMINを使用してコンテナを実行してみてください。

CIでの使用

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

リモート接続

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

Playwrightサーバーの実行

DockerでPlaywrightサーバーを起動する

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"

サーバーへの接続

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
browser = 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.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を実行するには、Python、Playwrightブラウザ、およびブラウザのシステム依存関係がインストールされている必要があります。以下のDockerfileを参照してください。

FROM python:3.12-bookworm

RUN pip install playwright==@1.51.0 && \
playwright install --with-deps