Skip to main content

Docker

Введение

Dockerfile.noble может быть использован для запуска скриптов Playwright в среде Docker. Этот образ включает браузеры Playwright и системные зависимости браузера. Пакет/зависимость Playwright не включены в образ и должны быть установлены отдельно.

Использование

Этот Docker-образ опубликован в Microsoft Artifact Registry.

info

Этот 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": {}
}
note

Использование --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:

  1. Использование переменной окружения с @playwright/test:
PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:3000/ npx playwright test
  1. Использование 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 при доступе к локальным серверам.

note

При запуске тестов удаленно убедитесь, что версия 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).
note

Рекомендуется всегда закреплять ваш 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