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");
我有一个已经在 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");