我使用通常的方式在本地安装了chromedp:- $ go get -u github.com/chromedp/chromedp
。我可以在本地运行它,但当我将它部署到我的stage环境中时,我得到了以下错误:-
exec: \"google-chrome\": executable file not found in $PATH
我需要在dockerfile中做哪些更改?
注意:我已经尝试按照this answer中的建议在doesn文件中添加以下代码,仍然不起作用
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```
发布于 2021-09-22 10:56:28
我花了一段时间才弄明白这个问题,这不仅仅是你的问题。当你在本地机器上安装chromedp时,它会抓取软件包并为特定的发行版进行编译。当你在docker中运行它时,你需要为你在docker中运行的发行版下载一个特定的chromium版本。这是因为deb不同于rpm,不同于高山,你需要有正确的铬。
这是我的docker文件的一个副本,使用的是一个基本的linux发行版
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"]
这个版本可能适用于阿尔卑斯山的https://pkgs.alpinelinux.org/packages?name=chromium&branch=v3.10。然而,根据我的经验,最好不要使用最小的发行版,因为chrome可能依赖于高山中没有包含的功能。
https://stackoverflow.com/questions/69281762
复制相似问题