如何在Dockerfile中安装特定版本的Chrome?

5

有一个Dockerfile,它从python镜像中安装,然后需要安装特定版本(而不是最新版本)的Google Chrome。

以下是我的Dockerfile:

FROM python:3.6

# Tools
RUN apt-get update \
    && apt-get install -y vim less \
    && apt-get clean

# https://github.com/SeleniumHQ/docker-selenium/blob/master/NodeChrome/Dockerfile.txt
#============================================
# Google Chrome
#============================================
# can specify versions by CHROME_VERSION;
#  e.g. google-chrome-stable=53.0.2785.101-1
#       google-chrome-beta=53.0.2785.92-1
#       google-chrome-unstable=54.0.2840.14-1
#       latest (equivalent to google-chrome-stable)
#       google-chrome-beta  (pull latest beta)
#============================================
ARG CHROME_VERSION="google-chrome-stable"
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-chrome.list \
  && apt-get update -qqy \
  && apt-get -qqy install \
    ${CHROME_VERSION:-google-chrome-stable} \
  && rm /etc/apt/sources.list.d/google-chrome.list \
  && rm -rf /var/lib/apt/lists/* /var/cache/apt/*

Chrome的安装步骤来源于这里(如评论所述),即使使用示例中的版本,我仍然遇到错误。

E: Version '53.0.2785.101-1' for 'google-chrome-stable' was not found

我尝试了来自https://chromereleases.googleblog.com/的其他版本,但都没有成功。

你知道安装特定版本的不同方法吗?或者我有什么步骤做错了吗?


PS:最新版本的Chrome确实可以正确安装。只有当我指定早期版本时才会出现问题。 - Joao Coelho
2个回答

6

我找了一段时间,发现你是从谷歌的软件源安装,在他们的软件源中只保留最新版本的Google Chrome。你可能可以搜索具有较旧Chrome版本的第三方软件源,但我个人不建议这样做。

此帖发布时,当前版本为google-chrome-stable75.0.3770.100-1。对您来说行吗?

最后,我直接复制了您的Dockerfile,并在映像上安装了最新版本的Google Chrome。你是如何运行docker的呢?

以下是我的过程:

  1. 将您的Dockerfile直接复制到./Dockerfile
  2. docker build ./
  3. docker image ls
  4. 复制我的镜像ID(在我的情况下为90206843f24e)
  5. docker run --entrypoint "/bin/bash" -it 90206843f24e

您将进入docker映像的根shell,以“poke” around运行google-chrome -version以验证是否已安装上述版本。

希望这对你有用。祝你好运并保持联系!


1
非常感谢您查看这个问题,@Joshua。正如我在评论中提到的那样,最新版本运行良好,但当我指定一个版本时它就无法工作,而您的答案解释了原因(Google仓库只保留最新版本,这很糟糕)。我需要早期版本的原因是,在安装ChromeDriver时,它不会获取最新版本的Chromedriver(只获取版本73),所以我想安装一个早期版本的Chrome。 - Joao Coelho
2
哦,我现在更好地理解了你的问题。很抱歉听到这个消息。正如我所提到的,你可以在谷歌上浏览一下,尝试找到一个旧版本的Google Chrome的第三方存储库。但是我建议你要非常谨慎,选择仔细,这也取决于你的项目有多敏感。很遗憾这对你没有起作用,祝你好运。 - Joshua
稍微扩展一下 Docker 语法... 假设我的容器名称为 headless =>docker exec -it headless bash
google-chrome -version Google Chrome 81.0.4044.138
- Greg

1
跟进这个旧帖子,补充一下谷歌确实提供旧版本的谷歌浏览器你可以在这里找到版本号列表)。
假设你想要谷歌浏览器 114.x.x.x,因为你的 ChromeDriver 只支持谷歌浏览器 114 版本:
ENV CHROME_VERSION=114.0.5735.198-1
RUN wget -q https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${CHROME_VERSION}_amd64.deb
RUN apt-get -y update
RUN apt-get install -y ./google-chrome-stable_${CHROME_VERSION}_amd64.deb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接