如何在apache/airflow:2.1.4 Docker镜像中安装geckodriver和Firefox
解决方案
你可以直接修改现有Dockerfile,添加Firefox和geckodriver的安装逻辑,完整Dockerfile参考如下:
FROM apache/airflow:2.1.4 # 切换到root用户安装系统依赖 USER root # 安装Firefox及相关依赖 RUN apt-get update && \ apt-get install -y --no-install-recommends firefox-esr wget bzip2 && \ rm -rf /var/lib/apt/lists/* # 安装对应版本的geckodriver,这里以v0.33.0为例,可根据实际需要调整版本 RUN GECKODRIVER_VERSION=v0.33.0 && \ wget https://github.com/mozilla/geckodriver/releases/download/$GECKODRIVER_VERSION/geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz && \ tar -xzf geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz && \ mv geckodriver /usr/local/bin/ && \ chmod +x /usr/local/bin/geckodriver && \ rm geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz # 切回默认的airflow用户 USER airflow WORKDIR /python_dependencies COPY ./requirements.txt . RUN pip3 install -r requirements.txt
额外注意事项
- 你的
requirements.txt需要包含selenium依赖,版本建议和geckodriver、Firefox版本适配,避免出现兼容性问题 - Airflow任务中调用Selenium时必须开启无头模式,否则会因为容器无图形界面报错,初始化示例参考:
from selenium import webdriver from selenium.webdriver.firefox.options import Options options = Options() options.add_argument("--headless") options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") driver = webdriver.Firefox(options=options)
- 重新构建镜像后再启动Airflow服务即可解决找不到Firefox的报错
内容的提问来源于stack exchange,提问作者qwertyqwert
相关产品推荐
相关产品推荐

