Docker
Введение
Dockerfile.noble может быть использован для запуска скриптов Playwright в среде Docker. Этот образ включает браузеры Playwright и системные зависимости браузера. Пакет/зависимость Playwright не включены в образ и должны быть установлены отдельно.
Использование
Этот Docker-образ опубликован в Microsoft Artifact Registry.
Этот Docker-образ предназначен только для тестирования и разработки. Не рекомендуется использовать этот Docker-образ для посещения ненадежных веб-сайтов.
Загрузка образа
docker pull mcr.microsoft.com/playwright:v1.51.0-noble
Запуск образа
По умолчанию Docker-образ будет использовать пользователя root
для запуска браузеров. Это отключит песочницу Chromium, которая недоступна с root. Если вы запускаете доверенный код (например, сквозные тесты) и хотите избежать хлопот с управлением отдельным пользователем, то пользователь root может быть подходящим. Для веб-скрейпинга или обхода сайтов мы рекомендуем создать отдельного пользователя внутри контейнера Docker и использовать профиль seccomp.
Сквозные тесты
На доверенных веб-сайтах вы можете избежать создания отдельного пользователя и использовать root, так как вы доверяете коду, который будет выполняться в браузерах.
docker run -it --rm --ipc=host mcr.microsoft.com/playwright: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:v1.51.0-noble /bin/bash
seccomp_profile.json
необходим для запуска Chromium с песочницей. Это профиль seccomp по умолчанию для Docker с дополнительными разрешениями на клонирование пространства имен пользователя:
{
"comment": "Разрешить создание пространств имен пользователя",
"names": [
"clone",
"setns",
"unshare"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"includes": {},
"excludes": {}
}
Использование --ipc=host
рекомендуется при использовании Chrome (документация Docker). Chrome может исчерпать память без этого флага.
Использование в 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.51.0-noble /bin/sh -c "npx -y playwright@1.51.0 run-server --port 3000 --host 0.0.0.0"
Подключение к серверу
Существует два способа подключения к удаленному серверу Playwright:
- Использование переменной окружения с
@playwright/test
:
PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:3000/ npx playwright test
- Использование API browserType.connect() для других приложений:
const browser = await 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 хоста. Ваши тесты должны использовать hostmachine
вместо localhost
при доступе к локальным серверам.
При запуске тестов удаленно убедитесь, что версия Playwright в ваших тестах соответствует версии, работающей в контейнере Docker.
Теги образов
Смотрите [все доступные теги образов].
В настоящее время мы публикуем образы со следующими тегами:
:v1.51.0
- Docker-образ релиза Playwright v1.51.0 на основе Ubuntu 24.04 LTS (Noble Numbat).:v1.51.0-noble
- Docker-образ релиза Playwright v1.51.0 на основе Ubuntu 24.04 LTS (Noble Numbat).:v1.51.0-jammy
- Docker-образ релиза Playwright v1.51.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, не поддерживаются.
Создание собственного образа
Чтобы запустить Playwright внутри Docker, вам нужно установить Node.js, браузеры Playwright и системные зависимости браузера. Смотрите следующий Dockerfile:
FROM node:20-bookworm
RUN npx -y playwright@1.51.0 install --with-deps