Playwright是由微软公司2020年初发布的新一代自动化测试工具,相较于目前最常用的 Selenium,它仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作,并同时支持以无头模式、有头模式运行。

官网地址:https://playwright.dev/docs/why-playwright/
GitHub:https://github.com/microsoft/playwright

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

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

https://playwright.dev/docs/docker

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

端到端

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

docker run -it --rm --ipc=host mcr.microsoft.com/playwright:v1.32.0-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.32.0-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": {}
}
#FROM node:lts-alpine
#FROM playwright/chromium
FROM mcr.microsoft.com/playwright:v1.31.2-focal

# 自定义环境变量
#ENV TZ=Asia/Shanghai

# 设置本地系统时间和时区
#RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone

# Install dependencies
RUN npm install cnpm -g --registry=https://mirrors.sjtug.sjtu.edu.cn/npm-registry && PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=true cnpm install

# 拷贝打包的资源
WORKDIR /APP

RUN npx playwright install-deps chromium

COPY package.json package.json

COPY . /APP
CMD ["npm", "start"]
作者:Jeebiz  创建时间:2023-02-16 23:29
最后编辑:Jeebiz  更新时间:2024-03-12 09:16