我们如何使用 dpkg 在 dockerfile 中的 alpine 图像上安装 google-chrome-stable?

Cod*_*her 20 google-chrome docker docker-compose alpine-linux

我正在尝试使用 dpkg 在 alpine 图像上安装 google-chrome-stable。但是,已安装 dpkg 但未安装 google-chrome-stable 并返回此错误?有没有办法使用 dpkg 或其他方式在高山图像中安装 google-chrome-stable?

dpkg: regarding google-chrome-stable_current_amd64.deb containing 

google-chrome-stable:amd64, pre-dependency problem:
 google-chrome-stable:amd64 pre-depends on dpkg (>= 1.14.0)

dpkg: error processing archive google-chrome-stable_current_amd64.deb (--install):
 pre-dependency problem - not installing google-chrome-stable:amd64
Errors were encountered while processing:
Run Code Online (Sandbox Code Playgroud)

Dockerfile:

# Base image
FROM ruby:2.6.3-alpine3.10
# Use node version 10.16.3, yarn version 1.16.0
RUN apk add  --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.10/main/ nodejs=10.16.3-r0
RUN apk add  --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.10/community/ yarn=1.16.0-r0

# Install dependencies
RUN apk upgrade
RUN apk --update \
    add build-base \
    git \
    tzdata \
    nodejs \
    nodejs-npm \
    bash \
    curl \
    yarn \
    gzip \
    postgresql-client \
    postgresql-dev \
    imagemagick \
    imagemagick-dev \
    imagemagick-libs \
    chromium \
    chromium-chromedriver \
    ncurses \
    less \
    dpkg=1.19.7-r0 \
    chromium \
    chromium-chromedriver

RUN dpkg --add-architecture amd64
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN dpkg -i google-chrome-stable_current_amd64.deb

# This is the base directory used in any
# further COPY, RUN and ENTRYPOINT commands
WORKDIR /webapp
# Copy Gemfile and Gemfile.lock and run bundle install
COPY Gemfile* /webapp/
RUN gem install bundler -v '1.17.3' && \
    bundle _1.17.3_ install

# Copy everything to /webapp for docker image
COPY . ./

EXPOSE 3000

# Run the application
CMD ["rails", "server", "-b", "0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)

val*_*ano 20

以这种方式安装 Chrome .deb 文件在 Alpine 上不起作用。

虽然该dpkg软件包在 Alpine 存储库中可用,并且对于安装轻量级 Debian 软件包很有用,但您将无法使用它来安装复杂的 Debian 软件包,因为它无法满足许多 Debian 依赖项。Alpine 通常与 Debian 不兼容(依赖musl libc),因此使用 apk 安装本机 Alpine 软件包是正确的方法。

AFAIK,目前没有与 Google Chrome Alpine Linux 兼容的 musl-libc 构建。

但是,您可以安装Chromium浏览器,它可以使用apk包获得:

apk add chromium

另一种选择是在 vanilla Alpine 映像上启用 glibc,使其与 Debian 二进制文件兼容。这是一个相当简单的过程,请参阅:Dockerfile。但是,它可能不适合具有现有应用程序的图像,例如ruby:2.6.3-alpine3.10. 此外,即使在 Alpine 上设置了 glibc,Chrome 也不太可能毫无问题地运行。我进行了快速尝试(Dockerfile),但无法通过第一个段错误。

21 年 9 月 5 日编辑:至少可以说,在 Alpine 上运行与 debian 兼容的 Chrome 稳定版将是一项非常艰巨的任务。这部分是由于大量的依赖项和库。尝试在动态链接期间运行它会导致段错误,最终来自动态链接器的断言。即使我们设法解决了这些问题并启动了 Chrome,它也可能非常不稳定。

  • 运行 apk --update --upgrade 添加 chromium 然后执行此 ENV PUPPETEER_EXECUTABLE_PATH /usr/bin/chromium-browser (3认同)