如何在 Selenium 和 Firefox 中应用 Dockerfile 多阶段方法?

问题描述 投票:0回答:1

我正在尝试将 Dockerfile 拆分为多阶段方法以减小大小。我正在使用 Selenium 和 Firefox,但从基本图像复制不起作用。

find / -name firefox
/usr/local/lib/python3.11/site-packages/selenium/webdriver/firefox
/usr/lib/firefox
/usr/lib/firefox/firefox
/usr/bin/firefox

which firefox
/usr/bin/firefox

Dockerfile:

FROM python:3.11.4-alpine
COPY --from=base_image /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
COPY --from=base_image /usr/local/bin /usr/local/bin
COPY --from=base_image /usr/lib/firefox /usr/lib/firefox
COPY --from=base_image /usr/bin/firefox /usr/bin/firefox
COPY --from=base_image /project /project

硒.py:

from selenium import webdriver

options = webdriver.FirefoxOptions()
#options.binary_location = "/usr/lib/firefox/firefox"
#options.binary_location = "/usr/bin/firefox/firefox-bin"
#options.binary_location = "/usr/bin/firefox"
service = webdriver.FirefoxService(executable_path=driver_path)
driver = webdriver.Firefox(service=service, options=options)

三个 diff bin 路径都不起作用

如何将 Firefox 文件从基础复制到最终图像并使 Selenium 正常工作?

docker selenium-webdriver firefox alpine-linux
1个回答
0
投票

您可以使用它创建一个相当轻量级的 Docker 镜像。很难得到比这更简单的了。从一个阶段到另一个阶段挑选依赖项是不值得的。

Firefox 将安装到您的

PATH
上,因此无需显式指定此路径。

🗎

Dockerfile

FROM python:3.11.4-alpine

RUN apk add firefox && \
    pip install selenium==4.18.1

COPY selenium-firefox.py .

ENV MOZ_HEADLESS=1

CMD python3 selenium-firefox.py

🗎

selenium-firefox.py
(一个简单的测试脚本。)

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.headless = True
driver = webdriver.Firefox(options=options)

driver.get("http://google.com/")

print(driver.title)

driver.quit()

© www.soinside.com 2019 - 2024. All rights reserved.