关于在docker中使用playwright,以及独立运行chrome的记录
使用chromium
创建dockerfile
1 | FROM mcr.microsoft.com/playwright:v1.55.0-noble |
几个关键点说明:
- 通过supervisor来管理多个进程
- 使用xvfb来创建虚拟显示器
- 使用x11vnc来创建vnc服务
- 使用novnc来创建web端的vnc访问
- 这其中因为chrome已无法监听0.0.0.0地址,所以使用socat做了一个地址转发
- chrome的用户数据目录挂载在/app/chrome-user-data,方便持久化,由于每次启动时chrome会创建SingletonLock文件,所以每次启动前需要删除
构建并运行容器
创建一个脚本run.sh1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22!/bin/zsh
构建 Docker 镜像
echo "构建 Docker 镜像..."
docker build -t playwright-env .
运行 Docker 容器
echo "启动 Docker 容器..."
docker run -d \
--name playwright-env \
-p 8080:8080 \
-p 9222:9222 \
-e DISPLAY=:99 \
-e VNC_PASSWORD=playwright \
-v ./workspace:/app \
--shm-size=2g \
-it \
--restart=unless-stopped \
playwright-env
echo "容器已启动,名称: playwright-env"
echo "端口映射: 8080:8080, 9222:9222"
还有个使用tigervnc替代xvfb+x11vnc的方案
1 | FROM mcr.microsoft.com/playwright:v1.55.0-noble |
构建并运行容器
1 |
|
使用chrome
创建dockerfile
1 | # ========================================================= |
构建并运行容器
1 | !/bin/bash |