ARG RELEASE |
ARG LAUNCHPAD_BUILD_ARCH |
LABEL org.opencontainers.image.ref.name=ubuntu |
LABEL org.opencontainers.image.version=24.04 |
ADD file:1d7c45546e94b90e941c5bf5c7a5d415d7b868581ad96171d4beb76caa8ab683 in / |
CMD ["/bin/bash"] |
ARG AUTHORS=SeleniumHQ |
LABEL authors=SeleniumHQ <docker-selenium@seleniumhq.org> |
LABEL org.opencontainers.image.source=https://github.com/SeleniumHQ/docker-selenium |
ARG VERSION=4.31.0 |
ARG RELEASE=selenium-4.31.0 |
ARG MVN_SELENIUM_VERSION=4.31.0 |
ARG OPENTELEMETRY_VERSION=1.48.0 |
ARG GRPC_VERSION=1.71.0 |
ARG NETTY_VERSION=4.2.0.Final |
ARG CS_VERSION=2.1.18 |
ARG POSTGRESQL_VERSION=42.7.5 |
ARG ENVSUBST_VERSION=1.4.4 |
ARG SEL_USER=seluser |
ARG SEL_GROUP=seluser |
ARG HOME=/home/seluser |
ARG UID=1200 |
ARG GID=1201 |
ARG TZ=UTC |
ARG JRE_VERSION=21 |
ARG TARGETARCH=amd64 |
ARG TARGETVARIANT= |
USER root |
ENV DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true SEL_USER=seluser SEL_UID=1200 SEL_GID=1201 HOME=/home/seluser TZ=UTC SEL_DOWNLOAD_DIR=/home/seluser/Downloads VIDEO_FOLDER=/videos CONFIG_FILE=/opt/selenium/config.toml VENV_PATH=/opt/venv |
RUN |19 AUTHORS=SeleniumHQ VERSION=4.31.0 RELEASE=selenium-4.31.0 MVN_SELENIUM_VERSION=4.31.0 OPENTELEMETRY_VERSION=1.48.0 GRPC_VERSION=1.71.0 NETTY_VERSION=4.2.0.Final CS_VERSION=2.1.18 POSTGRESQL_VERSION=42.7.5 ENVSUBST_VERSION=1.4.4 SEL_USER=seluser SEL_GROUP=seluser HOME=/home/seluser UID=1200 GID=1201 TZ=UTC JRE_VERSION=21 TARGETARCH=amd64 TARGETVARIANT= /bin/sh -c echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse\n" > /etc/apt/sources.list && echo "deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse\n" >> /etc/apt/sources.list && echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports noble main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb-src [arch=arm64] http://ports.ubuntu.com/ubuntu-ports noble main restricted universe multiverse" >> /etc/apt/sources.list # buildkit |
RUN |19 AUTHORS=SeleniumHQ VERSION=4.31.0 RELEASE=selenium-4.31.0 MVN_SELENIUM_VERSION=4.31.0 OPENTELEMETRY_VERSION=1.48.0 GRPC_VERSION=1.71.0 NETTY_VERSION=4.2.0.Final CS_VERSION=2.1.18 POSTGRESQL_VERSION=42.7.5 ENVSUBST_VERSION=1.4.4 SEL_USER=seluser SEL_GROUP=seluser HOME=/home/seluser UID=1200 GID=1201 TZ=UTC JRE_VERSION=21 TARGETARCH=amd64 TARGETVARIANT= /bin/sh -c apt-get -qqy update && apt-get upgrade -yq && apt-get -qqy --no-install-recommends install acl bzip2 xz-utils tzdata sudo unzip wget jq gnupg2 libnss3-tools openjdk-${JRE_VERSION}-jdk-headless ca-certificates && rm -rf /var/lib/apt/lists/* /var/cache/apt/* # buildkit |
ENV PATH=/opt/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin VIRTUAL_ENV=/opt/venv |
RUN |19 AUTHORS=SeleniumHQ VERSION=4.31.0 RELEASE=selenium-4.31.0 MVN_SELENIUM_VERSION=4.31.0 OPENTELEMETRY_VERSION=1.48.0 GRPC_VERSION=1.71.0 NETTY_VERSION=4.2.0.Final CS_VERSION=2.1.18 POSTGRESQL_VERSION=42.7.5 ENVSUBST_VERSION=1.4.4 SEL_USER=seluser SEL_GROUP=seluser HOME=/home/seluser UID=1200 GID=1201 TZ=UTC JRE_VERSION=21 TARGETARCH=amd64 TARGETVARIANT= /bin/sh -c apt-get -qqy update && apt-get upgrade -yq && apt-get -qqy --no-install-recommends install python3 python3-pip python3-venv && python3 -m pip install --upgrade setuptools virtualenv --break-system-packages && rm -rf /var/lib/apt/lists/* /var/cache/apt/* && echo "source $VENV_PATH/bin/activate" >> /etc/bash.bashrc # buildkit |
RUN |19 AUTHORS=SeleniumHQ VERSION=4.31.0 RELEASE=selenium-4.31.0 MVN_SELENIUM_VERSION=4.31.0 OPENTELEMETRY_VERSION=1.48.0 GRPC_VERSION=1.71.0 NETTY_VERSION=4.2.0.Final CS_VERSION=2.1.18 POSTGRESQL_VERSION=42.7.5 ENVSUBST_VERSION=1.4.4 SEL_USER=seluser SEL_GROUP=seluser HOME=/home/seluser UID=1200 GID=1201 TZ=UTC JRE_VERSION=21 TARGETARCH=amd64 TARGETVARIANT= /bin/sh -c ARCH=$(if [ "$(dpkg --print-architecture)" = "arm64" ]; then echo "aarch64"; else echo "$(dpkg --print-architecture)"; fi) && wget -q https://github.com/moparisthebest/static-curl/releases/download/v8.11.0/curl-$ARCH -O /usr/bin/curl && chmod +x /usr/bin/curl && curl --version # buildkit |
RUN |19 AUTHORS=SeleniumHQ VERSION=4.31.0 RELEASE=selenium-4.31.0 MVN_SELENIUM_VERSION=4.31.0 OPENTELEMETRY_VERSION=1.48.0 GRPC_VERSION=1.71.0 NETTY_VERSION=4.2.0.Final CS_VERSION=2.1.18 POSTGRESQL_VERSION=42.7.5 ENVSUBST_VERSION=1.4.4 SEL_USER=seluser SEL_GROUP=seluser HOME=/home/seluser UID=1200 GID=1201 TZ=UTC JRE_VERSION=21 TARGETARCH=amd64 TARGETVARIANT= /bin/sh -c if [ "${TARGETARCH}" = "arm" ] && [ "${TARGETVARIANT}" = "v7" ]; then export ARCH=armhf ; else export ARCH=$(dpkg --print-architecture) ; fi && sed -i 's/securerandom\.source=file:\/dev\/random/securerandom\.source=file:\/dev\/urandom/' /usr/lib/jvm/java-${JRE_VERSION}-openjdk-${ARCH}/conf/security/java.security && ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime && dpkg-reconfigure -f noninteractive tzdata && cat /etc/timezone && groupadd ${SEL_GROUP} --gid ${SEL_GID} && useradd ${SEL_USER} --create-home --gid ${SEL_GID} --shell /bin/bash --uid ${SEL_UID} && usermod -a -G sudo ${SEL_USER} && echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers && echo "${SEL_USER}:$(cat /run/secrets/SEL_PASSWD)" | chpasswd && mkdir -p /opt/selenium /opt/selenium/assets /opt/selenium/secrets /opt/selenium/logs /var/run/supervisor /var/log/supervisor ${SEL_DOWNLOAD_DIR} ${HOME}/.mozilla ${HOME}/.vnc ${HOME}/.pki/nssdb ${VIDEO_FOLDER} && certutil -d sql:${HOME}/.pki/nssdb -N --empty-password && touch ${CONFIG_FILE} && chown -R ${SEL_USER}:${SEL_GROUP} /opt/selenium /var/run/supervisor /var/log/supervisor /etc/passwd ${HOME} ${VIDEO_FOLDER} && chmod -R 775 /opt/selenium /var/run/supervisor /var/log/supervisor /etc/passwd ${HOME} ${VIDEO_FOLDER} && wget --no-verbose https://github.com/${AUTHORS}/selenium/releases/download/${RELEASE}/selenium-server-${VERSION}.jar -O /opt/selenium/selenium-server.jar && chgrp -R 0 /opt/selenium ${HOME} ${VIDEO_FOLDER} /opt/selenium/assets /var/run/supervisor /var/log/supervisor && chmod -R g=u /opt/selenium ${HOME} ${VIDEO_FOLDER} /opt/selenium/assets /var/run/supervisor /var/log/supervisor && setfacl -Rm u:${SEL_USER}:rwx /opt /opt/selenium ${HOME} ${VIDEO_FOLDER} /opt/selenium/assets /var/run/supervisor /var/log/supervisor && setfacl -Rm g:${SEL_GROUP}:rwx /opt /opt/selenium ${HOME} ${VIDEO_FOLDER} /opt/selenium/assets /var/run/supervisor /var/log/supervisor && if [ `arch` = "aarch64" ] || [ `arch` = "x86_64" ]; then curl -fL https://github.com/coursier/coursier/releases/download/v${CS_VERSION}/coursier.jar > /tmp/cs && chmod +x /tmp/cs && mkdir -p /external_jars && chmod -R 775 /external_jars ; fi && if [ -f "/tmp/cs" ]; then java -jar /tmp/cs fetch --classpath --cache /external_jars io.opentelemetry:opentelemetry-exporter-otlp:${OPENTELEMETRY_VERSION} io.grpc:grpc-netty:${GRPC_VERSION} io.netty:netty-codec-http:${NETTY_VERSION} io.netty:netty-handler:${NETTY_VERSION} io.netty:netty-common:${NETTY_VERSION} > /external_jars/.classpath.txt && chmod 664 /external_jars/.classpath.txt && java -jar /tmp/cs fetch --classpath --cache /external_jars org.seleniumhq.selenium:selenium-session-map-jdbc:${MVN_SELENIUM_VERSION} org.postgresql:postgresql:${POSTGRESQL_VERSION} org.seleniumhq.selenium:selenium-session-map-redis:${MVN_SELENIUM_VERSION} > /external_jars/.classpath_session_map.txt && chmod 664 /external_jars/.classpath_session_map.txt ; fi && rm -fr /root/.cache/* && echo 'if [[ $(ulimit -n) -gt 200000 ]]; then echo "WARNING: Very high value reported by \"ulimit -n\". Consider passing \"--ulimit nofile=32768\" to \"docker run\"."; fi' >> ${HOME}/.bashrc # buildkit |
COPY --chown=1200:1201 check-grid.sh entry_point.sh configs/node/nodeGridUrl.sh configs/node/nodePreStop.sh handle_heap_dump.sh /opt/bin/ # buildkit |
COPY --chown=1200:1201 mask /usr/local/bin/ # buildkit |
RUN |19 AUTHORS=SeleniumHQ VERSION=4.31.0 RELEASE=selenium-4.31.0 MVN_SELENIUM_VERSION=4.31.0 OPENTELEMETRY_VERSION=1.48.0 GRPC_VERSION=1.71.0 NETTY_VERSION=4.2.0.Final CS_VERSION=2.1.18 POSTGRESQL_VERSION=42.7.5 ENVSUBST_VERSION=1.4.4 SEL_USER=seluser SEL_GROUP=seluser HOME=/home/seluser UID=1200 GID=1201 TZ=UTC JRE_VERSION=21 TARGETARCH=amd64 TARGETVARIANT= /bin/sh -c chmod +x /opt/bin/*.sh /usr/local/bin/mask # buildkit |
COPY supervisord.conf /etc # buildkit |
ARG CERT_TRUST_ATTR=TCu,Cu,Tu |
COPY --chown=1200:1201 certs/add-cert-helper.sh certs/add-jks-helper.sh /opt/bin/ # buildkit |
COPY --chown=1200:1201 certs/tls.crt certs/tls.key certs/server.jks certs/server.pass /opt/selenium/secrets/ # buildkit |
RUN |20 AUTHORS=SeleniumHQ VERSION=4.31.0 RELEASE=selenium-4.31.0 MVN_SELENIUM_VERSION=4.31.0 OPENTELEMETRY_VERSION=1.48.0 GRPC_VERSION=1.71.0 NETTY_VERSION=4.2.0.Final CS_VERSION=2.1.18 POSTGRESQL_VERSION=42.7.5 ENVSUBST_VERSION=1.4.4 SEL_USER=seluser SEL_GROUP=seluser HOME=/home/seluser UID=1200 GID=1201 TZ=UTC JRE_VERSION=21 TARGETARCH=amd64 TARGETVARIANT= CERT_TRUST_ATTR=TCu,Cu,Tu /bin/sh -c ARCH=$(if [ "$(dpkg --print-architecture)" = "amd64" ]; then echo "x86_64"; else echo "$(dpkg --print-architecture)"; fi) && curl -fsSL https://github.com/ndviet/envsubst/releases/download/v${ENVSUBST_VERSION}/envsubst-$(uname -s)-${ARCH} -o envsubst && chmod +x envsubst && mv envsubst /usr/local/bin && ln -sf /usr/local/bin/envsubst /usr/bin/envsubst # buildkit |
USER 1200:1201 |
RUN |20 AUTHORS=SeleniumHQ VERSION=4.31.0 RELEASE=selenium-4.31.0 MVN_SELENIUM_VERSION=4.31.0 OPENTELEMETRY_VERSION=1.48.0 GRPC_VERSION=1.71.0 NETTY_VERSION=4.2.0.Final CS_VERSION=2.1.18 POSTGRESQL_VERSION=42.7.5 ENVSUBST_VERSION=1.4.4 SEL_USER=seluser SEL_GROUP=seluser HOME=/home/seluser UID=1200 GID=1201 TZ=UTC JRE_VERSION=21 TARGETARCH=amd64 TARGETVARIANT= CERT_TRUST_ATTR=TCu,Cu,Tu /bin/sh -c python3 -m venv $VENV_PATH && $VENV_PATH/bin/python3 -m pip install --upgrade pip setuptools virtualenv psutil && wget -q https://github.com/Supervisor/supervisor/archive/refs/heads/main.zip -O /tmp/supervisor.zip && unzip /tmp/supervisor.zip -d /tmp && cd /tmp/supervisor-main && $VENV_PATH/bin/python3 -m pip install --break-system-packages . && rm -rf /tmp/supervisor.zip /tmp/supervisor-main # buildkit |
RUN |20 AUTHORS=SeleniumHQ VERSION=4.31.0 RELEASE=selenium-4.31.0 MVN_SELENIUM_VERSION=4.31.0 OPENTELEMETRY_VERSION=1.48.0 GRPC_VERSION=1.71.0 NETTY_VERSION=4.2.0.Final CS_VERSION=2.1.18 POSTGRESQL_VERSION=42.7.5 ENVSUBST_VERSION=1.4.4 SEL_USER=seluser SEL_GROUP=seluser HOME=/home/seluser UID=1200 GID=1201 TZ=UTC JRE_VERSION=21 TARGETARCH=amd64 TARGETVARIANT= CERT_TRUST_ATTR=TCu,Cu,Tu /bin/sh -c /opt/bin/add-jks-helper.sh -d /opt/selenium/secrets && /opt/bin/add-cert-helper.sh -d /opt/selenium/secrets ${CERT_TRUST_ATTR} # buildkit |
ENV SE_BIND_HOST=false SE_SERVER_PROTOCOL=http SE_REJECT_UNSUPPORTED_CAPS=false SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED=true SE_OTEL_TRACES_EXPORTER=otlp SE_SUPERVISORD_LOG_LEVEL=info SE_SUPERVISORD_CHILD_LOG_DIR=/tmp SE_SUPERVISORD_LOG_FILE=/tmp/supervisord.log SE_SUPERVISORD_PID_FILE=/tmp/supervisord.pid SE_SUPERVISORD_AUTO_RESTART=true SE_SUPERVISORD_START_RETRIES=5 SE_SUPERVISORD_UNIX_SERVER_PASSWORD=secret SE_LOG_TIMESTAMP_FORMAT=%Y-%m-%d %H:%M:%S,%3N SE_LOG_LEVEL=INFO SE_HTTP_LOGS=false SE_STRUCTURED_LOGS=false SE_ENABLE_TRACING=true SE_ENABLE_TLS=false SE_JAVA_OPTS_DEFAULT= SE_JAVA_HEAP_DUMP=false SE_JAVA_HTTPCLIENT_VERSION=HTTP_1_1 SE_JAVA_SSL_TRUST_STORE=/opt/selenium/secrets/server.jks SE_JAVA_SSL_TRUST_STORE_PASSWORD=/opt/selenium/secrets/server.pass SE_JAVA_DISABLE_HOSTNAME_VERIFICATION=true SE_HTTPS_CERTIFICATE=/opt/selenium/secrets/tls.crt SE_HTTPS_PRIVATE_KEY=/opt/selenium/secrets/tls.key |
CMD ["/opt/bin/entry_point.sh"] |
ARG AUTHORS=SeleniumHQ |
LABEL authors=SeleniumHQ |
USER root |
COPY /usr/local/bin/ffmpeg /usr/local/bin/ffmpeg # buildkit |
COPY /usr/local/bin/rclone /usr/local/bin/rclone # buildkit |
RUN |1 AUTHORS=SeleniumHQ /bin/sh -c apt-get -qqy update && apt-get -qqy --no-install-recommends install libx11-6 libx11-xcb1 libxcb1 libpulse0 libasound2t64 x11-xserver-utils x11-utils && apt-get -qqy update && apt-get -yq upgrade && rm -rf /var/lib/apt/lists/* /var/cache/apt/* # buildkit |
COPY *.conf /etc/supervisor/conf.d/ # buildkit |
COPY --chown=1200:1201 *.sh *.py /opt/bin/ # buildkit |
USER 1200 |
RUN |1 AUTHORS=SeleniumHQ /bin/sh -c ffmpeg -version && rclone --version && touch /opt/selenium/upload.conf # buildkit |
ENV DISPLAY_NUM=99 DISPLAY_CONTAINER_NAME=selenium SE_RECORD_VIDEO=true SE_RECORD_AUDIO=false SE_AUDIO_SOURCE=-f pulse -ac 2 -i default SE_SERVER_PROTOCOL=http SE_VIDEO_POLL_INTERVAL=1 SE_FRAME_RATE=15 SE_CODEC=libx264 SE_PRESET=-preset ultrafast VIDEO_FOLDER=/videos SE_VIDEO_FILE_NAME=video.mp4 SE_VIDEO_FILE_NAME_TRIM_REGEX=[:alnum:]-_ RCLONE_CONFIG=/opt/selenium/upload.conf SE_VIDEO_UPLOAD_ENABLED=false SE_VIDEO_INTERNAL_UPLOAD=true SE_UPLOAD_DESTINATION_PREFIX= |
EXPOSE map[9000/tcp:{}] |
ARG AUTHORS=SeleniumHQ |
LABEL authors=SeleniumHQ |
ARG NOVNC_SOURCE=tags |
ARG NOVNC_VERSION=v1.5.0 |
ARG WEBSOCKIFY_SOURCE=tags |
ARG WEBSOCKIFY_VERSION=v0.12.0 |
ARG LANG_WHICH=en |
ARG LANG_WHERE=US |
ARG ENCODING=UTF-8 |
ARG LANGUAGE=en_US.UTF-8 |
USER root |
ENV LANG_WHICH=en LANG_WHERE=US ENCODING=UTF-8 LANGUAGE=en_US.UTF-8 LANG=en_US.UTF-8 SE_ENABLE_BROWSER_LEFTOVERS_CLEANUP=false SE_BROWSER_LEFTOVERS_INTERVAL_SECS=3600 SE_BROWSER_LEFTOVERS_PROCESSES_SECS=7200 SE_BROWSER_LEFTOVERS_TEMPFILES_DAYS=1 SE_EVENT_BUS_PUBLISH_PORT=4442 SE_EVENT_BUS_SUBSCRIBE_PORT=4443 SE_DRAIN_AFTER_SESSION_COUNT=0 SE_NODE_MAX_SESSIONS=1 SE_NODE_SESSION_TIMEOUT=300 SE_NODE_OVERRIDE_MAX_SESSIONS=false SE_NODE_HEARTBEAT_PERIOD=30 SE_NODE_REGISTER_PERIOD=120 SE_NODE_REGISTER_CYCLE=10 SE_NODE_REGISTER_SHUTDOWN_ON_FAILURE=true SE_OTEL_SERVICE_NAME=selenium-node SE_NODE_RELAY_ONLY=true SE_OFFLINE=true SE_NODE_BROWSER_VERSION=stable SE_NODE_PLATFORM_NAME=Linux SE_RECORD_VIDEO=false DISPLAY_CONTAINER_NAME=localhost SE_SCREEN_WIDTH=1920 SE_SCREEN_HEIGHT=1080 SE_SCREEN_DEPTH=24 SE_SCREEN_DPI=96 SE_START_XVFB=true SE_START_VNC=true SE_START_NO_VNC=true SE_NO_VNC_PORT=7900 SE_VNC_PORT=5900 DISPLAY=:99.0 DISPLAY_NUM=99 GENERATE_CONFIG=true DBUS_SESSION_BUS_ADDRESS=/dev/null |
RUN |9 AUTHORS=SeleniumHQ NOVNC_SOURCE=tags NOVNC_VERSION=v1.5.0 WEBSOCKIFY_SOURCE=tags WEBSOCKIFY_VERSION=v0.12.0 LANG_WHICH=en LANG_WHERE=US ENCODING=UTF-8 LANGUAGE=en_US.UTF-8 /bin/sh -c apt-get update -qqy && apt-get -qqy --no-install-recommends install xvfb libxcb1 xauth pulseaudio x11vnc x11-utils fluxbox eterm hsetroot feh language-pack-en locales libfontconfig libfreetype6 xfonts-scalable xfonts-cyrillic fonts-ubuntu fonts-liberation fonts-ipafont-gothic fonts-wqy-zenhei fonts-tlwg-loma-otf fonts-noto-color-emoji p11-kit p11-kit-modules && locale-gen ${LANGUAGE} && dpkg-reconfigure --frontend noninteractive locales && apt-get -qyy autoremove && rm -rf /var/lib/apt/lists/* /var/cache/apt/* && apt-get -qyy clean # buildkit |
RUN |9 AUTHORS=SeleniumHQ NOVNC_SOURCE=tags NOVNC_VERSION=v1.5.0 WEBSOCKIFY_SOURCE=tags WEBSOCKIFY_VERSION=v0.12.0 LANG_WHICH=en LANG_WHERE=US ENCODING=UTF-8 LANGUAGE=en_US.UTF-8 /bin/sh -c wget -nv -O noVNC.zip "https://github.com/novnc/noVNC/archive/refs/${NOVNC_SOURCE}/${NOVNC_VERSION}.zip" && unzip -x noVNC.zip && mv noVNC-${NOVNC_VERSION#v} /opt/bin/noVNC && cp /opt/bin/noVNC/vnc.html /opt/bin/noVNC/index.html && rm noVNC.zip && wget -nv -O websockify.zip "https://github.com/novnc/websockify/archive/refs/${WEBSOCKIFY_SOURCE}/${WEBSOCKIFY_VERSION}.zip" && unzip -x websockify.zip && rm websockify.zip && cd websockify-${WEBSOCKIFY_VERSION#v} && $VENV_PATH/bin/python3 -m pip install --break-system-packages . && mv websockify /opt/bin/noVNC/utils/websockify && mv run /opt/bin/noVNC/utils/websockify && chmod +x /opt/bin/noVNC/utils/websockify/run && cd .. && rm -rf websockify-${WEBSOCKIFY_VERSION#v} && chmod +x /dev/shm && mkdir -p /tmp/.X11-unix && x11vnc -storepasswd $(cat /run/secrets/SEL_PASSWD) ${HOME}/.vnc/passwd && chown -R "${SEL_USER}:${SEL_GROUP}" ${HOME}/.vnc && chmod -R 775 ${HOME} /tmp/.X11-unix && chgrp -R 0 ${HOME} /tmp/.X11-unix && chmod -R g=u ${HOME} /tmp/.X11-unix # buildkit |
COPY --chown=1200:1201 start-selenium-node.sh start-xvfb.sh start-vnc.sh start-novnc.sh generate_config generate_relay_config json_merge.py /opt/bin/ # buildkit |
RUN |9 AUTHORS=SeleniumHQ NOVNC_SOURCE=tags NOVNC_VERSION=v1.5.0 WEBSOCKIFY_SOURCE=tags WEBSOCKIFY_VERSION=v0.12.0 LANG_WHICH=en LANG_WHERE=US ENCODING=UTF-8 LANGUAGE=en_US.UTF-8 /bin/sh -c chmod +x /opt/bin/*.sh /opt/bin/*.py /opt/bin/generate_* # buildkit |
COPY selenium_grid_logo.png /usr/share/images/fluxbox/ubuntu-light.png # buildkit |
COPY selenium.conf /etc/supervisor/conf.d/ # buildkit |
USER 1200 |
EXPOSE map[5900/tcp:{}] |
ARG AUTHORS=SeleniumHQ |
LABEL authors=SeleniumHQ |
USER root |
ARG CHROME_VERSION=google-chrome-stable |
RUN |2 AUTHORS=SeleniumHQ CHROME_VERSION=google-chrome-stable /bin/sh -c wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor | tee /etc/apt/trusted.gpg.d/google.gpg >/dev/null && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && apt-get update -qqy && if echo "${CHROME_VERSION}" | grep -qE "google-chrome-stable[_|=][0-9]*"; then CHROME_VERSION=$(echo "$CHROME_VERSION" | tr '=' '_') && wget -qO google-chrome.deb "https://mirror.cs.uchicago.edu/google-chrome/pool/main/g/google-chrome-stable/${CHROME_VERSION}_$(dpkg --print-architecture).deb" && apt-get -qqy --no-install-recommends install --allow-downgrades ./google-chrome.deb && rm -rf google-chrome.deb ; else apt-get -qqy --no-install-recommends install ${CHROME_VERSION} ; fi && rm /etc/apt/sources.list.d/google-chrome.list && rm -rf /var/lib/apt/lists/* /var/cache/apt/* # buildkit |
COPY wrap_chrome_binary /opt/bin/wrap_chrome_binary # buildkit |
RUN |2 AUTHORS=SeleniumHQ CHROME_VERSION=google-chrome-stable /bin/sh -c /opt/bin/wrap_chrome_binary # buildkit |
ARG CHROME_DRIVER_VERSION |
RUN |3 AUTHORS=SeleniumHQ CHROME_VERSION=google-chrome-stable CHROME_DRIVER_VERSION= /bin/sh -c DRIVER_ARCH=$(if [ "$(dpkg --print-architecture)" = "amd64" ]; then echo "linux64"; else echo "linux-aarch64"; fi) && if [ ! -z "$CHROME_DRIVER_VERSION" ]; then CHROME_DRIVER_URL=https://storage.googleapis.com/chrome-for-testing-public/$CHROME_DRIVER_VERSION/${DRIVER_ARCH}/chromedriver-${DRIVER_ARCH}.zip ; else CHROME_MAJOR_VERSION=$(google-chrome --version | sed -E "s/.* ([0-9]+)(\.[0-9]+){3}.*/\1/") && if [ $CHROME_MAJOR_VERSION -lt 115 ]; then echo "Geting ChromeDriver latest version from https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_MAJOR_VERSION}" && CHROME_DRIVER_VERSION=$(wget -qO- https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_MAJOR_VERSION} | sed 's/\r$//') && CHROME_DRIVER_URL=https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip ; else echo "Geting ChromeDriver latest version from https://googlechromelabs.github.io/chrome-for-testing/LATEST_RELEASE_${CHROME_MAJOR_VERSION}" && CHROME_DRIVER_VERSION=$(wget -qO- https://googlechromelabs.github.io/chrome-for-testing/LATEST_RELEASE_${CHROME_MAJOR_VERSION} | sed 's/\r$//') && CHROME_DRIVER_URL=https://storage.googleapis.com/chrome-for-testing-public/$CHROME_DRIVER_VERSION/${DRIVER_ARCH}/chromedriver-${DRIVER_ARCH}.zip ; fi fi && echo "Using ChromeDriver from: "$CHROME_DRIVER_URL && echo "Using ChromeDriver version: "$CHROME_DRIVER_VERSION && wget --no-verbose -O /tmp/chromedriver_${DRIVER_ARCH}.zip $CHROME_DRIVER_URL && rm -rf /opt/selenium/chromedriver && unzip /tmp/chromedriver_${DRIVER_ARCH}.zip -d /opt/selenium && rm /tmp/chromedriver_${DRIVER_ARCH}.zip && mv /opt/selenium/chromedriver /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION || true && mv /opt/selenium/chromedriver-${DRIVER_ARCH}/chromedriver /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION || true && chmod 755 /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION && ln -fs /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION /usr/bin/chromedriver # buildkit |
COPY chrome-cleanup.sh /opt/bin/chrome-cleanup.sh # buildkit |
COPY chrome-cleanup.conf /etc/supervisor/conf.d/chrome-cleanup.conf # buildkit |
USER 1200 |
RUN |3 AUTHORS=SeleniumHQ CHROME_VERSION=google-chrome-stable CHROME_DRIVER_VERSION= /bin/sh -c echo "chrome" > /opt/selenium/browser_name # buildkit |
RUN |3 AUTHORS=SeleniumHQ CHROME_VERSION=google-chrome-stable CHROME_DRIVER_VERSION= /bin/sh -c google-chrome --version | awk '{print $3}' > /opt/selenium/browser_version # buildkit |
RUN |3 AUTHORS=SeleniumHQ CHROME_VERSION=google-chrome-stable CHROME_DRIVER_VERSION= /bin/sh -c echo "\"goog:chromeOptions\": {\"binary\": \"/usr/bin/google-chrome\"}" > /opt/selenium/browser_binary_location # buildkit |
ENV SE_OTEL_SERVICE_NAME=selenium-node-chrome |
USER root |
ARG YANDEX_BROWSER_VERSION=yandex-browser-stable |
RUN |1 YANDEX_BROWSER_VERSION=yandex-browser-stable /bin/sh -c wget -q -O - https://repo.yandex.ru/yandex-browser/YANDEX-BROWSER-KEY.GPG | gpg --dearmor | tee /etc/apt/trusted.gpg.d/yandex-browser.gpg >/dev/null && echo "deb https://repo.yandex.ru/yandex-browser/deb stable main" >> /etc/apt/sources.list.d/yandex-browser.list && apt-get update -qqy && if echo "${YANDEX_BROWSER_VERSION}" | grep -qE "yandex-browser-stable[_|=][0-9]*"; then YANDEX_BROWSER_VERSION=$(echo "$YANDEX_BROWSER_VERSION" | tr '=' '_') && wget -qO yandex-browser.deb "https://repo.yandex.ru/yandex-browser/deb/pool/main/y/yandex-browser-stable/${YANDEX_BROWSER_VERSION}_$(dpkg --print-architecture).deb" && apt-get -qqy --no-install-recommends install --allow-downgrades ./yandex-browser.deb && rm -rf yandex-browser.deb ; else apt-get -qqy --no-install-recommends install ${YANDEX_BROWSER_VERSION} ; fi && rm /etc/apt/sources.list.d/yandex-browser.list && rm -rf /var/lib/apt/lists/* /var/cache/apt/* && mkdir -p /etc/opt/yandex/browser/policies/managed && echo '{"CloudDocumentsDisabled": true}' > /etc/opt/yandex/browser/policies/managed/managed_policies.json # buildkit |
ARG YANDEX_DRIVER_URL=https://github.com/yandex/YandexDriver/releases/download/v25.2.1-stable/yandexdriver-25.2.1.799-linux.zip |
RUN |2 YANDEX_BROWSER_VERSION=yandex-browser-stable YANDEX_DRIVER_URL=https://github.com/yandex/YandexDriver/releases/download/v25.2.1-stable/yandexdriver-25.2.1.799-linux.zip /bin/sh -c echo "Using YandexDriver from: "$YANDEX_DRIVER_URL && wget --no-verbose -O /tmp/yandexdriver.zip $YANDEX_DRIVER_URL && rm -rf /opt/selenium/chromedriver && unzip /tmp/yandexdriver.zip -d /opt/selenium && rm /tmp/yandexdriver.zip && ls /opt/selenium && chmod 755 /opt/selenium/yandexdriver && ln -fs /opt/selenium/yandexdriver /usr/bin/chromedriver # buildkit |
USER 1200 |
RUN |2 YANDEX_BROWSER_VERSION=yandex-browser-stable YANDEX_DRIVER_URL=https://github.com/yandex/YandexDriver/releases/download/v25.2.1-stable/yandexdriver-25.2.1.799-linux.zip /bin/sh -c yandex-browser --version | tail -n1 | awk '{print $2}' > /opt/selenium/browser_version # buildkit |
RUN |2 YANDEX_BROWSER_VERSION=yandex-browser-stable YANDEX_DRIVER_URL=https://github.com/yandex/YandexDriver/releases/download/v25.2.1-stable/yandexdriver-25.2.1.799-linux.zip /bin/sh -c echo "\"goog:chromeOptions\": {\"binary\": \"/usr/bin/yandex-browser\"}" > /opt/selenium/browser_binary_location # buildkit |
ENV SE_OTEL_SERVICE_NAME=selenium-node-yandex |