Docker
はじめに
Dockerfile.noble を使用して、Playwright スクリプトを Docker 環境で実行できます。このイメージには、Playwright ブラウザとブラウザのシステム依存関係が含まれています。Playwright パッケージ/依存関係はイメージには含まれていないため、別途インストールする必要があります。
使用法
この Docker イメージは、Microsoft Artifact Registry に公開されています。
このDockerイメージは、テストおよび開発目的のみに使用することを意図しています。このDockerイメージを使用して、信頼できないウェブサイトを訪問することはお勧めしません。
イメージをプルする
docker pull mcr.microsoft.com/playwright/java:v1.54.0-noble
イメージを実行する
デフォルトでは、Dockerイメージはrootユーザーを使用してブラウザを実行します。これにより、rootでは利用できないChromiumサンドボックスが無効になります。信頼されたコード(例:エンドツーエンドテスト)を実行し、個別のユーザーを管理する手間を避けたい場合は、rootユーザーでも問題ないかもしれません。ウェブスクレイピングやクローリングの場合、Dockerコンテナ内に別のユーザーを作成し、seccompプロファイルを使用することをお勧めします。
エンドツーエンドテスト
信頼されたウェブサイトでは、ブラウザで実行されるコードを信頼しているため、個別のユーザーを作成せずにrootを使用することができます。
docker run -it --rm --ipc=host mcr.microsoft.com/playwright/java:v1.54.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/java:v1.54.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": {}
}
推奨されるDocker構成
DockerでPlaywrightを実行する場合、以下の構成が推奨されます。
--initDockerフラグの使用は、PID=1のプロセスに対する特別な処理を避けるために推奨されます。これはゾンビプロセスの一般的な原因です。- Chromiumを使用する場合、
--ipc=hostを使用することが推奨されます。これがないと、Chromiumはメモリ不足になりクラッシュする可能性があります。このオプションの詳細については、Dockerドキュメントを参照してください。 - Chromiumの起動時に奇妙なエラーが表示される場合は、ローカルで開発中に
docker run --cap-add=SYS_ADMINを使用してコンテナを実行してみてください。
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.54.0-noble /bin/sh -c "npx -y playwright@1.54.0 run-server --port 3000 --host 0.0.0.0"
サーバーへの接続
package org.example;
import com.microsoft.playwright.*;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = 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.54.0-noble /bin/sh -c "npx -y playwright@1.54.0 run-server --port 3000 --host 0.0.0.0"
これにより、hostmachineがホストのlocalhostを指すようになります。テストでは、ローカルサーバーにアクセスする際にlocalhostの代わりにhostmachineを使用する必要があります。
リモートでテストを実行する場合、テスト内のPlaywrightのバージョンがDockerコンテナで実行されているバージョンと一致していることを確認してください。
イメージタグ
すべての利用可能なイメージタグをご覧ください。
現在、以下のタグでイメージを公開しています。
:v1.54.0- Ubuntu 24.04 LTS (Noble Numbat)をベースにしたPlaywright v1.54.0リリースDockerイメージ。:v1.54.0-noble- Ubuntu 24.04 LTS (Noble Numbat)をベースにしたPlaywright v1.54.0リリースDockerイメージ。:v1.54.0-jammy- Ubuntu 22.04 LTS (Jammy Jellyfish)をベースにしたPlaywright v1.54.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標準ライブラリに基づいた他のディストリビューションはサポートされていません。