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

Docker

はじめに

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

使用方法

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

情報

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

イメージのプル

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

イメージの実行

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

エンドツーエンドテスト

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

docker run -it --rm --ipc=host mcr.microsoft.com/playwright/java: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/java: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": {}
}

DockerでPlaywrightを実行する際には、以下の設定を推奨します

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

CIでの使用

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

リモート接続

Playwright ServerをDockerで実行し、テストはホストシステムまたは別のマシンで実行し続けることができます。これは、サポートされていない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"

サーバーへの接続

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.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標準ライブラリをベースとする他のディストリビューションはサポートされていません。