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

Docker

Введение

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

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

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

к сведению

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

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

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

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

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

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

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

docker run -it --rm --ipc=host mcr.microsoft.com/playwright/java: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/java: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"

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

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.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, не поддерживаются.