bounty将在2天后过期。回答此问题可获得+100的声望奖励。Zach Bellay希望吸引更多人关注此问题:Dockerfile的一个工作示例,它可以作为Airflow的基础图像运行,并运行Playwright及其依赖项和烘焙到图像中的浏览器。
我被要求学习Docker
,这样我们最终可以在Apache Airflow
Docker + Kubernetes集群中设置我们的网页抓取脚本。如果我用错了这些术语,那是因为我是Docker的初学者。我不知道一大堆,但我会尽力解释细节。Apache Airflow
确实有自己的映像,我一直在使用,但是他们的explanations表明安装python
包的唯一方法是通过pip install --user -r requirements.txt
,我已经在我自己的Dockerfile中添加了pip install --user -r requirements.txt
作为指令。问题是,要使playwright
工作,它需要安装浏览器,这就是它变得棘手的地方。
简单地运行命令playwright install --with-deps
将是正确的方法,但要安装这些依赖项,您需要root
权限,而我没有...playwright install --with-deps
失败:
将所有内容安装为root
也不起作用(使项目WAY更复杂,如果不是不可能的话)。最重要的是,运行命令提示您输入root
密码,而这个密码似乎根本不可用。
这是我已经放弃的一点,但我想也许最好使用playwright
自己的映像,然后手动构建apache airflow
。
哪种方式最好?
提前感谢!
3条答案
按热度按时间klr1opcd1#
最好的方法是使用playwright docker映像作为基础映像,这样就不需要安装它的依赖项了。https://playwright.dev/docs/docker
uz75evzq2#
事实证明,包括苹果M1芯片在内的ARM 64不支持剧作家。
https://github.com/microsoft/playwright/issues/18284
在本文发表之时,这个问题的解决方案似乎是使用AMD 64/x86架构芯片,而不是ARM芯片。下面的Dockerfile可以在x86上工作,但不能在ARM上工作,而且虚拟化架构似乎也不起作用。
iyfjxgzm3#
在Docker中的Apache Airflow中设置剧作家的最佳方法是使用自定义Docker映像来安装剧作家及其依赖项,然后使用PythonOperator或BashOperator来运行剧作家脚本。
说明
Playwright是一个Python库,允许您自动执行Web浏览器操作,如导航到URL、填写表单、单击按钮、截图等。它支持多种浏览器,如Chromium、Firefox和WebKit。
Apache Airflow是一个允许您编排和调度工作流(如数据管道、ETL作业、机器学习任务等)的平台。它具有一个Web界面,可让您监控和管理工作流,以及一组丰富的运算符,可让您执行不同类型的任务。
Docker是一个工具,允许您创建和运行包含应用程序及其依赖项的隔离容器。它使您可以更轻松地在不同环境(如开发、测试和生产环境)中部署和运行应用程序。
要在Docker中使用Apache Airflow中的剧作家,您需要执行以下步骤:
1.创建一个自定义Docker映像,用于安装playwright及其依赖项,如Node.js、Python和浏览器二进制文件。您可以使用正式的playwright映像作为基础映像,也可以从头开始创建自己的映像。您还需要安装Apache Airflow包和工作流所需的任何其他包。
1.创建一个定义自定义图像的Dockerfile。例如,您可以使用类似如下的内容:
1.使用docker build命令构建您的自定义映像。例如,您可以使用如下命令:
1.使用docker run命令运行您的自定义映像。例如,您可以使用类似如下的命令:
这将在主机的端口8080上启动Airflow Web服务器。您可以通过访问http://localhost:8080来访问Web界面。
1.要运行Airflow调度程序,您可以使用另一个docker run命令。例如,您可以使用如下命令:
这将启动Airflow计划程序,该程序将根据您的计划触发您的工作流程。
1.要运行剧作家脚本,您可以在DAG中使用PythonOperator或BashOperator。PythonOperator允许您将Python函数作为任务执行,BashOperator允许您将bash命令作为任务执行。例如,您可以使用类似以下的命令: