Docker
Введение
Dockerfile.noble может быть использован для запуска скриптов Playwright в среде Docker. Этот образ включает браузеры Playwright и системные зависимости браузера. Пакет/зависимость Playwright не включены в образ и должны быть установлены отдельно.
Использование
Этот Docker-образ опубликован в Microsoft Artifact Registry.
Этот Docker-образ предназначен только для тестирования и разработки. Не рекомендуется использовать этот Docker-образ для посещения ненадежных веб-сайтов.
Загрузка образа
docker pull mcr.microsoft.com/playwright/python:v1.50.0-noble
Запуск образа
По умолчанию Docker-образ будет использовать пользователя root
для запуска браузеров. Это отключит песочницу Chromium, которая недоступна с root. Если вы запускаете доверенный код (например, сквозные тесты) и хотите избежать хлопот с управлением отдельным пользователем, то пользователь root может быть подходящим. Для веб-скрейпинга или обхода мы рекомендуем создать отдельного пользователя внутри контейнера Docker и использовать профиль seccomp.
Сквозные тесты
На доверенных веб-сайтах вы можете избежать создания отдельного пользователя и использовать root, так как вы доверяете коду, который будет выполняться в браузерах.
docker run -it --rm --ipc=host mcr.microsoft.com/playwright/python: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/python:v1.50.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": {}
}
Использование --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"
Подключение к серверу
- Sync
- Async
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.connect("ws://127.0.0.1:3000/")
from playwright.async_api import async_playwright
async with async_playwright() as p:
browser = await p.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.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, не поддерживаются.
Создание собственного образа
Чтобы запустить Playwright внутри Docker, вам нужно установить Python, браузеры Playwright и системные зависимости браузера. Смотрите следующий Dockerfile:
FROM python:3.12-bookworm
RUN pip install playwright==@1.50.0 && \
playwright install --with-deps