Docker
Введение
Dockerfile.noble может быть использован для запуска скриптов Playwright в среде Docker. Этот образ включает браузеры Playwright и системные зависимости браузера. Пакет/зависимость Playwright не включены в образ и должны быть установлены отдельно.
Использование
Этот Docker-образ опубликован в Microsoft Artifact Registry.
Этот Docker-образ предназначен только для тестирования и разработки. Не рекомендуется использовать этот Docker-образ для посещения ненадежных веб-сайтов.
Загрузка образа
docker pull mcr.microsoft.com/playwright/java:v1.56.0-noble
Запуск образа
По умолчанию Docker-образ будет использовать пользователя root для запуска браузеров. Это отключит песочницу Chromium, которая недоступна с root. Если вы запускаете доверенный код (например, сквозные тесты) и хотите избежать хлопот с управлением отдельным пользователем, то пользователь root может быть подходящим. Для веб-скрейпинга или обхода сайтов мы рекомендуем создать отдельного пользователя внутри контейнера Docker и использовать профиль seccomp.
Сквозные тесты
На доверенных веб-сайтах вы можете избежать создания отдельного пользователя и использовать root, так как вы доверяете коду, который будет выполняться в браузерах.
docker run -it --rm --ipc=host mcr.microsoft.com/playwright/java:v1.56.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.56.0-noble /bin/bash
seccomp_profile.json необходим для запуска Chromium с песочницей. Это профиль seccomp по умолчанию для Docker с дополнительными разрешениями на клонирование пространства имен пользователя:
{
"comment": "Allow create user namespaces",
"names": [
"clone",
"setns",
"unshare"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"includes": {},
"excludes": {}
}
Рекомендуемая конфигурация Docker
При запуске Playwright в Docker рекомендуется следующая конфигурация:
- Использовать флаг Docker
--init— он помогает избежать особой обработки процессов с PID=1, что является частой причиной появления зомби-процессов. - Использовать
--ipc=hostпри работе с Chromium. Без этого параметра Chromium может столкнуться с нехваткой памяти и аварийно завершиться. Подробнее об этом параметре — в документации Docker. - Если при запуске Chromium возникают странные ошибки, попробуйте при локальной разработке запускать контейнер с параметром
docker run --cap-add=SYS_ADMIN.
Использование на CI
Смотрите наши руководства по непрерывной интеграции для примеров конфигураций.
Удаленное подключение
Вы можете запустить Playwright Server в Docker, оставив ваши тесты работающими на хост-системе или другой машине. Это полезно для запуска тестов на неподдерживаемых дистрибутивах Linux или в сценариях удаленного выполнения.
Запуск Playwright Server
Запустите Playwright Server в Docker:
docker run -p 3000:3000 --rm --init -it --workdir /home/pwuser --user pwuser mcr.microsoft.com/playwright:v1.56.0-noble /bin/sh -c "npx -y playwright@1.56.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.56.0-noble /bin/sh -c "npx -y playwright@1.56.0 run-server --port 3000 --host 0.0.0.0"
Это делает hostmachine указывающим на localhost хоста. Ваши тесты должны использовать hostmachine вместо localhost при доступе к локальным серверам.
При запуске тестов удаленно убедитесь, что версия Playwright в ваших тестах соответствует версии, работающей в контейнере Docker.
Теги образов
Смотрите все доступные теги образов.
В настоящее время мы публикуем образы со следующими тегами:
:v1.56.0— Docker-образ релиза Playwright v1.56.0 на базе Ubuntu 24.04 LTS (Noble Numbat).:v1.56.0-noble— Docker-образ релиза Playwright v1.56.0 на базе Ubuntu 24.04 LTS (Noble Numbat).:v1.56.0-jammy— Docker-образ релиза Playwright v1.56.0 на базе Ubuntu 22.04 LTS (Jammy Jellyfish).
Рекомендуется всегда закреплять ваш Docker-образ на определенной версии, если это возможно. Если версия Playwright в вашем Docker-образе не совпадает с версией в вашем проекте/тестах, Playwright не сможет найти исполняемые файлы браузера.
Базовые образы
В настоящее время мы публикуем образы на основе следующих версий Ubuntu:
- Ubuntu 24.04 LTS (Noble Numbat), теги образов включают
noble - Ubuntu 22.04 LTS (Jammy Jellyfish), теги образов включают
jammy
Alpine
Сборки браузеров для Firefox и WebKit создаются для библиотеки glibc. Alpine Linux и другие дистрибутивы, основанные на стандартной библиотеке musl, не поддерживаются.