Перейти к основному содержимому

Docker

Введение

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

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

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

к сведению

Этот Docker-образ предназначен только для тестирования и разработки. Не рекомендуется использовать этот Docker-образ для посещения ненадежных веб-сайтов.

Загрузка образа

docker pull mcr.microsoft.com/playwright/dotnet:v1.50.0-noble

Запуск образа

По умолчанию Docker-образ будет использовать пользователя root для запуска браузеров. Это отключит песочницу Chromium, которая недоступна с root. Если вы запускаете доверенный код (например, сквозные тесты) и хотите избежать хлопот с управлением отдельным пользователем, то пользователь root может быть подходящим. Для веб-скрейпинга или обхода сайтов мы рекомендуем создать отдельного пользователя внутри контейнера Docker и использовать профиль seccomp.

Сквозные тесты

На доверенных веб-сайтах вы можете избежать создания отдельного пользователя и использовать root, так как вы доверяете коду, который будет выполняться в браузерах.

docker run -it --rm --ipc=host mcr.microsoft.com/playwright/dotnet:v1.50.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/dotnet:v1.50.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.50.0-noble /bin/sh -c "npx -y playwright@1.50.0 run-server --port 3000 --host 0.0.0.0"

Подключение к серверу

using Microsoft.Playwright;

using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.ConnectAsync("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.50.0-noble /bin/sh -c "npx -y playwright@1.50.0 run-server --port 3000 --host 0.0.0.0"

Это делает hostmachine указывающим на localhost хоста. Ваши тесты должны использовать hostmachine вместо localhost при доступе к локальным серверам.

примечание

При запуске тестов удаленно убедитесь, что версия Playwright в ваших тестах соответствует версии, работающей в контейнере Docker.

Теги образов

Смотрите все доступные теги образов.

В настоящее время мы публикуем образы с следующими тегами:

  • :v1.50.0 - Docker-образ Playwright версии v1.50.0 на основе Ubuntu 24.04 LTS (Noble Numbat).
  • :v1.50.0-noble - Docker-образ Playwright версии v1.50.0 на основе Ubuntu 24.04 LTS (Noble Numbat).
  • :v1.50.0-jammy - Docker-образ Playwright версии v1.50.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, не поддерживаются.

Использование другой версии .NET

Вы можете использовать скрипт установки .NET для установки различных версий SDK:

curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --install-dir /usr/share/dotnet --channel 9.0