在 Kubernetes 上部署 Python 3.7、Chrome 和 Chromedriver(版本 114.0.5735.90)的完整指南

一、构建基础镜像

docker build -f /u01/isi/DockerFile . -t  thinking_code.com/xhh/crawler_base_image:v1.0.2docker push thinking_code.com/xhh/crawler_base_image:v1.0.2

二、K8s运行Pod

三、DockerFile文件

# 基于镜像基础
FROM python:3.7# 设置代码文件夹工作目录 /app
WORKDIR /app
# 复制当前代码文件到容器中 /app
ADD . /app# 安装常用命令
RUN apt-get update && apt-get install -y \coreutils \vim \wget \curl \net-tools \iputils-ping \telnet \curl \cron \gnupg \&& curl -fsSL https://deb.nodesource.com/setup_current.x | bash - \&& apt-get install -y nodejs \&& apt-get clean && \rm -rf /var/lib/apt/lists/*# 安装插件库
RUN pip install pyyaml
RUN pip install selenium
RUN pip install pycryptodome# 安装所需的包
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt# 安装 wget 和其他必要工具(如果没有 wget 的话)
RUN apt-get update && apt-get install -y wget unzip
# 将 Chrome 安装文件复制到 Docker 镜像中(假设文件在当前目录下)
COPY google-chrome-stable_114.0.5735.90-1_amd64.deb /tmp/google-chrome.deb
# 安装 Google Chrome
RUN apt-get install -y /tmp/google-chrome.deb
# 查看安装的 Google Chrome 版本
RUN google-chrome --version# 安装 ChromeDriver(假设已经将 chromedriver.zip 复制到 Docker 镜像中)
COPY chromedriver.zip /tmp/chromedriver.zip
RUN unzip /tmp/chromedriver.zip -d /usr/local/bin/ && chmod +x /usr/local/bin/chromedriver

四、依赖文件

requirements.txt

Jsonpath==0.82
Requests==2.31.0
loguru==0.6.0
lxml==4.9.2
nodejs==0.1.1
PyExecJS==1.5.1
PyMySQL==1.0.3
pyquery==2.0.0
redis==4.5.4
urllib3==1.25.11
Flask==2.2.5
dateparser==1.1.8
kafka-python==2.0.2
python-dateutil==2.8.2
retrying==1.3.4
elasticsearch==7.13.0
pycryptodome==3.19.0
requests-toolbelt==1.0.0

五、参考网址

Debian 中文软件仓库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/233578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Axure中继器的使用实现表格的增删改查的自定义文件

目录 一.认识中继器 1.1.什么中继器 1.2. 中继器的组成 1.3.中继器的使用场景 二.中继器进行增删改查 三.十例表格增删改查 还有Axure这个东西许多东西需要我们去发现,我们需要去细心的研究,我们一起加油吧!!!今…

ASP.NET Core MVC依赖注入理解(极简个人版)

依赖注入 文献来源:《Pro ASP.NET Core MVC》 Adam Freeman 第18章 依赖注入 1 依赖注入原理 所有可能变化的地方都用接口在使用接口的地方用什么实体类通过在ConfigureService中注册解决注册的实体类需要指定在何种生命周期中有效 TransientScopedSingleton 2…

SQL 入门指南:从零开始学习 SQL

当今时代,数据已经成为了我们生活中不可或缺的一部分。无论是企业的经营决策,还是个人的日常消费习惯,都需要通过对数据的收集、分析和应用来实现更好的结果。 而关系型数据库系统,作为最常见的数据存储和管理方式,SQ…

13 v-show指令

概述 v-show用于实现组件的显示和隐藏,和v-if单独使用的时候有点类似。不同的是,v-if会直接移除dom元素,而v-show只是让dom元素隐藏,而不会移除。 在实际开发中,v-show也经常被用到,需要重点掌握。 基本…

广州华锐互动VRAR:利用VR开展新能源汽车触电安全演练,降低培训成本和风险

随着新能源汽车行业的快速发展,相关的安全培训也变得越来越重要。其中,触电急救培训对于保障驾驶员和乘客的安全具有重要意义。传统培训方式存在一些不足,而利用VR技术进行培训则具有很多优势。 利用VR技术开展新能源汽车触电安全演练可以在模…

扩散模型介绍

介绍 AI 绘画中的扩散模型是近年来在计算机视觉和图像生成领域中获得关注的一种深度学习方法。这种模型特别擅长于生成高质量的图像,包括艺术作品和逼真的照片样式的图像。扩散模型的关键思想是通过一个渐进的、可逆的过程将数据(在这个场景中是图像&am…

验证码:防范官网恶意爬虫攻击,保障用户隐私安全

网站需要采取措施防止非法注册和登录,验证码是有效的防护措施之一。攻击者通常会使用自动化工具批量注册网站账号,以进行垃圾邮件发送、刷量等恶意活动。验证码可以有效阻止这些自动化工具,有效防止恶意程序或人员批量注册和登录网站。恶意程…

设计模式(三)-结构型模式(5)-外观模式

一、为何需要外观模式(Facade)? 要实现一个大功能,我们需要将它拆分成多个子系统。然后每个子系统所实现的功能,就由一个称为外观的高层功能模块来调用。这种设计方式就称为外观模式。该模式在开发时常常被使用过,所…

.NET面试题(二)

1.c# 中new关键字的作用 实例化对象和调用构造函数:当使用 new 关键字创建一个类的实例时,它会为对象分配内存,并调用相应的构造函数来初始化该对象。    隐藏基类成员(方法、属性、事件等):当在派生类中…

Axure中继器的基本使用

介绍中继器 在 Axure 中,中继器是一种交互设计元素,用于在不同页面之间传递数据或触发特定的事件。它可以帮助模拟真实的用户交互流程和页面之间的传递逻辑,继承关系用于描述两个元件之间的父子关系。通过使用继承关系,您可以创建…

Eclipse_03_如何加快index速度

1. ini配置文件 -Xms:是最小堆内存大小,也是初始堆内存大小,因为堆内存大小可以根据使用情况进行扩容,所以初始值最小,随着扩容慢慢变大。 -Xmx:是最大堆内存大小,随着堆内存的使用率越来越高&a…

小爱音箱pro接入gpt和语音控制电脑

系统环境win7,python3.11 先安装MiService,使用:GitHub - Yonsm/MiService: XiaoMi Cloud Service for mi.com这个安装没成功, 改用:GitHub - yihong0618/MiService: XiaoMi Cloud Service for mi.com 在终端使用变…

【提示工程】Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

解决问题 探索大语言模型解决推理问题的能力。从头训练或微调模型,需要创建大量的高质量含中间步骤的数据集,成本过大。 相关工作 1、使用中间步骤来解决推理问题 (1)使用自然语言通过一系列中间步骤解决数学应用题 &#xff0…

1-完全理解以太坊智能合约

了解区块链 区块链技术的核心概念是分布式账本,它是许多参与者共享的特定类型的数据库。 这个特殊的数据库只是一个交易列表,记录着网络中发生的每笔交易。每个人都可以拥有自己的交易列表备份,再加上强有力的货币激励措施消除各方之间信任…

《点云处理》 点云去噪

前言 通常从传感器(3D相机、雷达)中获取到的点云存在噪点(杂点、离群点、孤岛点等各种叫法)。噪点产生的原因有不同,可能是扫描到了不想要扫描的物体,可能是待测工件表面反光形成的,也可能是相…

项目中webpack优化配置(持续更新)

项目中webpack优化配置 1. 开发效率, 体验 DLL(开发过程中减少构建时间和增加应用程序的性能) 使用 DllPlugin 进行分包,使用 DllReferencePlugin(索引链接) 对 manifest.json 引用,让一些基本不会改动的代码先打包…

Groovy基础学习2

1.正则表达式 正则表达式是用于在文本中查找子字符串的模式。Groovy使用~“regex”表达式本地支持正则表达式。引号中包含的文本表示用于比较的表达式。 可以创建一个正则表达式对象: def regex ~"Groovy" 当定义正则表达式时,可以使用以下…

单元测试框架jUnit

JUnit(Java单元测试框架)是用于在Java应用程序中执行单元测试的框架。它是一个开源框架,广泛用于Java开发中。以下是一些关于JUnit的常见问题以及相应的汉语回答: 1. **什么是JUnit?** - JUnit是一个用于编写和运行…

大型语言模型:RoBERTa — 一种稳健优化的 BERT 方法

slavahead 一、介绍 BERT模型的出现BERT模型带来了NLP的重大进展。 BERT 的架构源自 Transformer,它在各种下游任务上取得了最先进的结果:语言建模、下一句预测、问答、NER标记等。 尽管 BERT 性能出色,研究人员仍在继续尝试其配置&#xff0…

Postman接口自动化测试之——批量执行(集合操作)

集合定义:在接口自动化测试过程中将一组请求(多条请求)保存到一起进行集中管理。方便执行过程中的维护、导出和执行等。 创建集合 在引导页点击“Collection”,或者在“Collection”标签点击图标; 字段解释 集合描述…