Docker chrome 硒 java openjdk:8 到高山

Docker chrome selenium java openjdk:8 to Alpine

我有一个已经在 openjdk:8 中运行的 Dockerfile,但我正在尝试将其转换为 alpine。它给我带来了一些麻烦。该应用程序是在 Java 中创建的,并使用了 Selenium。这是我当前的代码:

FROM openjdk:8-jdk-alpine

RUN apk update \
    && apk fetch gnupg \
    && apk add --virtual \
    curl wget xvfb unzip gnupg \
    && gpg --list-keys

ARG CHROME_DRIVER_VERSION=85.0.4183.87
RUN curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && echo "deb [arch=amd64]  http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list \
    && apk update \
    && apk add google-chrome-stable \
    && apk cache clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
    && wget https://chromedriver.storage.googleapis.com/${CHROME_DRIVER_VERSION}/chromedriver_linux64.zip \
    && unzip chromedriver_linux64.zip \
    && mv chromedriver /usr/bin/chromedriver \
    && chown root:root /usr/bin/chromedriver \
    && chmod +x /usr/bin/chromedriver

EXPOSE 42052
.
.
.

我尝试添加 gnupg,就像我在此处找到的那样:

但是它不起作用,我只是得到一个错误:/bin/sh: gpg: not found

如果我删除它,我只会遇到 apt-key 找不到的问题。 alpine 中的替代方案是什么,或者我必须对我的 docker 文件进行哪些更改才能再次工作。

提前致谢

显然 Chrome .deb 文件不能在 Alpine 上运行。所以它需要 Chromium 才能工作。如果您已经在 Java 代码中使用 Chrome 驱动程序,那么无需像我的情况那样进行任何更改即可正常工作。

FROM openjdk:8-jdk-alpine

RUN apk update && apk add --no-cache bash \
    alsa-lib \
    at-spi2-atk \
    atk \
    cairo \
    cups-libs \
    dbus-libs \
    eudev-libs \
    expat \
    flac \
    gdk-pixbuf \
    glib \
    libgcc \
    libjpeg-turbo \
    libpng \
    libwebp \
    libx11 \
    libxcomposite \
    libxdamage \
    libxext \
    libxfixes \
    tzdata \
    libexif \
    udev \
    xvfb \
    zlib-dev \
    chromium \
    chromium-chromedriver \
    && rm -rf /var/cache/apk/* \
    /usr/share/man \
    /tmp/*

RUN mkdir -p /data && adduser -D chrome \
    && chown -R chrome:chrome /data
USER chrome

.
.
.

如果您要添加创建文件夹 and/or 添加文件,就像我的情况一样,只需添加 USER root 即可工作

它将与 openjdk:8 版本一样工作。

实际上 alpine 版本中的答案 post 要更正工作必须添加代码:

chromeOptions.setBinary("/usr/bin/chromium-browser");