0

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

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

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

注意:我已经尝试按照答案中的建议在我的 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```
4

1 回答 1

0

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

这是我使用基本 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 中未包含的功能。

于 2021-09-22T10:56:28.173 回答