当前位置: 首页 > news >正文

docker打包使用有头模式playwright

1.打包镜像

创建Dockerfile文件如下

# playywright 官方镜像
FROM mcr.microsoft.com/playwright:v1.37.0-jammy

# 设置非交互式环境变量和时区
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Etc/UTC

# 安装 Python 3.9 和 pip(修复时区阻塞问题)
RUN apt-get update && \
    apt-get install -y software-properties-common tzdata && \
    ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \
    dpkg-reconfigure --frontend noninteractive tzdata && \
    add-apt-repository -y ppa:deadsnakes/ppa && \
    apt-get update && \
    apt-get install -y python3.9 python3.9-distutils && \
    curl -sS https://bootstrap.pypa.io/get-pip.py | python3.9

# 安装 Playwright Python 库和浏览器驱动
RUN python3.9 -m pip install playwright && \
    python3.9 -m playwright install

# 安装 Xvfb 和窗口管理器(支持有头模式)
RUN apt-get install -y xvfb fluxbox && \
    rm -rf /var/lib/apt/lists/*

# 设置环境变量
ENV DISPLAY=:99
ENV PYTHONPATH=/usr/bin/python3.9

# 启动脚本
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]

打包后镜像如下

FROM registry.cn-hangzhou.aliyuncs.com/spider_tie/playwright-python

2.启动容器测试

docker run -it --rm \
  -v $(pwd)/test.py:/app/test.py \
  registry.cn-hangzhou.aliyuncs.com/spider_tie/playwright-python \
  python3.9 /app/test.py
  

test.py内容如下

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 启动有头浏览器
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("https://example.com")
    print(page.title())
    browser.close()

测试结果

[root@centos-1 playwright_compile]# docker run -it --rm   -v $(pwd)/test.py:/app/test.py   playwright-python   python3.9 /app/test.py
Example Domain

可以看到正常打印网页中的title

相关文章:

  • 【开题报告+论文+源码】基于springboot加vue 前后端分离的校园新闻审核发布管理系统
  • 鸿蒙NEXT小游戏开发:记忆翻牌
  • 网络攻防快速入门笔记pwn | 02 栈溢出题型 | 2.3 ret2syscall
  • 【C++进阶四】vector模拟实现
  • 蓝桥杯省模拟赛 数位和
  • 使用LangChain Agents构建Gradio及Gradio Tools(3)——使用Langchain agents构建Gradio UI
  • AI-人工智能-多模态学习助力精准预测心脏毒性
  • 使用Hugging Face训练自定义重排模型(Reranker)完全指南
  • 2024年蓝桥杯Java B组省赛真题超详解析-分布式队列
  • Docker中安装MySQL--------【详细图解】
  • Vue2函数式组件实战:手写可调用的动态组件,适用于toast轻提示、tip提示、dialog弹窗等
  • 掌握AI营销:移动营销的新动力
  • c++:哈希表
  • GPT-4o推出的原生图像生成功能升级后有点东西!
  • 世界通信大会、嵌入式展及慕尼黑上海光博会亮点回顾
  • 手绘风格流程图工具:简单高效的在线流程图绘制工具
  • C语言复习笔记--指针(1)
  • echarts+HTML 绘制3d地图,加载散点+散点点击事件
  • 2025年SCI1区(TAC) ——语义和情感双重通道用于文本对话情感识别
  • 基于vue框架的智能服务旅游管理系统54kd3(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 《水饺皇后》领跑五一档票房,《哪吒2》上座率仍居第一
  • 韩国法院将重审李在明案,韩德洙入局能否为大选带来变数?
  • 司法服务保障西部陆海新通道建设,最高法专门发文
  • 比黄油年糕热量还高,这个火爆全网的甜品劝你慎吃
  • 关于新冠疫情防控与病毒溯源的中方行动和立场
  • 国台办:台商台企有信心与国家一起打赢这场关税战