【问题标题】:Unable to run chromedp in docker无法在 docker 中运行 chromedp
【发布时间】:2021-11-15 18:36:34
【问题描述】:

我使用这种通常的方式在本地安装了 chromedp:- $ go get -u github.com/chromedp/chromedp。我可以在本地运行它,但是当我将它部署到我的舞台环境时,出现以下错误:-

exec: \"google-chrome\": executable file not found in $PATH

我需要在我的 dockerfile 中进行哪些更改?

注意:我已经尝试按照this 答案中的建议在我的 Dockerfile 中添加以下代码,但仍然不起作用


RUN apk update && apk upgrade && apk add --no-cache bash git && apk add --no-cache chromium

# Installs latest Chromium package.
RUN echo @edge http://nl.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories \
    && echo @edge http://nl.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories \
    && apk add --no-cache \
    harfbuzz@edge \
    nss@edge \
    freetype@edge \
    ttf-freefont@edge \
    && rm -rf /var/cache/* \
    && mkdir /var/cache/apk

RUN go get github.com/mafredri/cdp


CMD chromium-browser --headless --disable-gpu --remote-debugging-port=9222 --disable-web-security --safebrowsing-disable-auto-update --disable-sync --disable-default-apps --hide-scrollbars --metrics-recording-only --mute-audio --no-first-run --no-sandbox```

【问题讨论】:

    标签: google-chrome go automation browser-automation chromedp


    【解决方案1】:

    我花了一段时间才弄清楚这个问题,不仅仅是你。 当您在本地机器上安装 chromedp 时,它会抓取软件包并为该特定发行版构建。当您在 docker 中运行它时,您需要为您在 docker 中运行的发行版下载特定的 chromium 版本。这是因为 deb 与 rpm 不同,与 alpine 不同,您需要使用正确的 chromium。

    这是我使用基本 linux 发行版的 docker 文件的副本

    RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | 
    apt-key add - \
    && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> 
    /etc/apt/sources.list.d/google.list
    RUN apt-get update && apt-get -y install google-chrome-stable
    RUN chrome &
    WORKDIR /app/svc/worker
    RUN go build -o main .
    EXPOSE 6061
    CMD ["./main"]
    

    此版本的 Alpine 可能适用 https://pkgs.alpinelinux.org/packages?name=chromium&branch=v3.10。但是,根据我的经验,最好不要使用最小的发行版,因为 chrome 可能依赖于 alpine 中未包含的功能。

    【讨论】:

    • 嗨@notdamama。我收到此错误 - 无法创建 LLB 定义:dockerfile 解析错误第 6 行:未知指令:APT-KE
    • 它没有做太多的宣传——尽管我认为它绝对应该是——但确实 chromedp 需要一些类似 Chromium 的浏览器在你的 $PATH 中,可以在这里看到:github.com/chromedp/chromedp/blob/… 确保你的容器在 $PATH 中有它,你可以通过执行到你的容器并尝试启动浏览器来做到这一点。
    猜你喜欢
    • 2020-03-25
    • 2019-11-24
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2020-01-04
    相关资源
    最近更新 更多