Skip to main content

Docker

Dockerfile.focal 可用于在 Docker 环境中运行 Playwright 脚本。这些镜像包含在 Docker 容器中运行浏览器所需的所有依赖项,还包括浏览器本身。

用法

此镜像发布在 Docker Hub 上。

拉取镜像

docker pull mcr.microsoft.com/playwright:v1.27.1-focal

运行镜像

默认情况下,Docker 镜像将使用 root 用户运行浏览器。这将禁用 Chromium 沙箱,因为 root 用户无法使用它。如果您运行受信任的代码(例如端到端测试)并且希望避免管理单独用户的麻烦,那么 root 用户可能没问题。对于网页抓取或爬取,我们建议在 Docker 容器内创建一个单独的用户并使用 seccomp 配置文件。

端到端测试

在受信任的网站上,您可以避免创建单独的用户并使用 root,因为您信任将在浏览器上运行的代码。

docker run -it --rm --ipc=host mcr.microsoft.com/playwright:v1.27.1-focal /bin/bash

爬取和抓取

在不受信任的网站上,建议使用单独的用户启动浏览器,并结合 seccomp 配置文件。在容器内部,或者如果您将 Docker 镜像用作基础镜像,则必须为此使用 adduser

docker run -it --rm --ipc=host --user pwuser --security-opt seccomp=seccomp_profile.json mcr.microsoft.com/playwright:v1.27.1-focal /bin/bash

需要 seccomp_profile.json 才能在沙箱中运行 Chromium。这是一个 默认的 Docker seccomp 配置文件,具有额外的用户命名空间克隆权限:

{
"comment": "Allow create user namespaces",
"names": [
"clone",
"setns",
"unshare"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"includes": {},
"excludes": {}
}
note

使用 Chrome 时建议使用 --ipc=hostDocker 文档)。没有此标志,Chrome 可能会耗尽内存。

在 CI 上使用

有关示例配置,请参阅我们的 持续集成指南

镜像标签

查看 [所有可用的镜像标签]

Docker 镜像由 GitHub Actions 自动发布。我们目前发布带有以下标签的镜像(在此示例中为 v1.20.0):

  • :next - 基于 Ubuntu 20.04 LTS (Focal Fossa) 的 tip-of-tree 镜像版本。
  • :next-focal - 基于 Ubuntu 20.04 LTS (Focal Fossa) 的 tip-of-tree 镜像版本。
  • :v1.20.0 - 基于 Ubuntu 20.04 LTS (Focal Fossa) 的 Playwright v1.20.0 发布版 docker 镜像。
  • :v1.20.0-focal - 基于 Ubuntu 20.04 LTS (Focal Fossa) 的 Playwright v1.20.0 发布版 docker 镜像。
  • :sha-XXXXXXX - 每个更改 docker 文件或浏览器的提交的 docker 镜像,标记有 短 sha(SHA 提交的前 7 位数字)。
note

如果可能,建议始终将您的 Docker 镜像固定到特定版本。如果您的 Docker 镜像中的 Playwright 版本与您的项目/测试中的版本不匹配,Playwright 将无法找到浏览器可执行文件。

基础镜像

我们目前发布基于以下 Ubuntu 版本的镜像:

  • Ubuntu 22.04 LTS (Jammy Jellyfish),镜像标签包括 jammy(不针对 Java 和 .NET 发布)
  • Ubuntu 20.04 LTS (Focal Fossa),镜像标签包括 focal
  • Ubuntu 18.04 LTS (Bionic Beaver),镜像标签包括 bionic(不针对 Java 和 .NET 发布)

Alpine

Firefox 和 WebKit 的浏览器构建是为 glibc 库构建的。不支持 Alpine Linux 和其他基于 musl 标准库的发行版。