Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Dockerfile with chromedriver
# See https://codeship.com/documentation/docker/browser-testing/
FROM myapp:base
# We need wget to set up the PPA and xvfb to have a virtual screen and unzip to install the Chromedriver
RUN apt-get install -y wget xvfb unzip
# Set up the Chrome PPA
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list
# Update the package list and install chrome
RUN apt-get update -y
RUN apt-get install -y google-chrome-stable
# Set up Chromedriver Environment variables
ENV CHROMEDRIVER_VERSION 2.19
ENV CHROMEDRIVER_DIR /chromedriver
RUN mkdir $CHROMEDRIVER_DIR
# Download and install Chromedriver
RUN wget -q --continue -P $CHROMEDRIVER_DIR "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip"
RUN unzip $CHROMEDRIVER_DIR/chromedriver* -d $CHROMEDRIVER_DIR
# Put Chromedriver into the PATH
ENV PATH $CHROMEDRIVER_DIR:$PATH
@jagruthim
Copy link

jagruthim commented Mar 4, 2020

I am using below docker and I face the issue driver not found and Selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/chromium is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
How can this issue be resolved?

FROM python:3.8-buster RUN apt-get update && apt-get install -yq \ chromium \ git-core \ xvfb=2:1.20.4-1 \ xsel=1.2.0+git9bfc13d.20180109-1 \ unzip=6.0-23+deb10u1 \ python-pytest=3.10.1-2 \ libgconf-2-4=3.2.6-5 \ libncurses5=6.1+20181013-2+deb10u2 \ libxml2-dev \ libxslt-dev \ libz-dev \ xclip=0.13-1

@bruno-ds
Copy link

bruno-ds commented Mar 19, 2020

FYI, Selenium provide a way similar Dockerfile :
https://github.com/SeleniumHQ/docker-selenium/blob/master/NodeChrome/Dockerfile

Personnaly, I'm still trying to understand how to interract with the container once built (an example would be great!)

@shogester
Copy link

shogester commented May 28, 2020

@JoaRiski that is brilliant. Was looking for a way line up stable_dev of chrome with chromedriver but for some reason they don't offer anything of the sort. Thanks for adding this!

@Vasavi-MN
Copy link

Vasavi-MN commented Nov 10, 2020

Could anyone help to modify docker file for chrome and chrome driver install on windows 2016 server

@avinashpatel57
Copy link

avinashpatel57 commented Mar 10, 2021

I adapted this to fetch the latest version of chrome driver appropriate for the chrome installation, rather than having a fixed value. Here's the snippet I use for installing:

RUN apt-get update && \
    apt-get install -y gnupg wget curl unzip --no-install-recommends && \
    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.list && \
    apt-get update -y && \
    apt-get install -y google-chrome-stable && \
    CHROMEVER=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") && \
    DRIVERVER=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROMEVER") && \
    wget -q --continue -P /chromedriver "http://chromedriver.storage.googleapis.com/$DRIVERVER/chromedriver_linux64.zip" && \
    unzip /chromedriver/chromedriver* -d /chromedriver

Thanks @JoaRiski

@ppetruneac
Copy link

ppetruneac commented Mar 23, 2021

I adapted this to fetch the latest version of chrome driver appropriate for the chrome installation, rather than having a fixed value. Here's the snippet I use for installing:

RUN apt-get update && \
    apt-get install -y gnupg wget curl unzip --no-install-recommends && \
    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.list && \
    apt-get update -y && \
    apt-get install -y google-chrome-stable && \
    CHROMEVER=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") && \
    DRIVERVER=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROMEVER") && \
    wget -q --continue -P /chromedriver "http://chromedriver.storage.googleapis.com/$DRIVERVER/chromedriver_linux64.zip" && \
    unzip /chromedriver/chromedriver* -d /chromedriver

Thanks @JoaRiski

@AmoghKatwe
Copy link

AmoghKatwe commented Apr 21, 2021

I still get an error. Can someone help me with it? @JoaRiski

This is my dockerfile,
`FROM python:3.6

RUN pip install --upgrade pip && pip install pytest && pip install pytest-mock && pip install pytest-smtp && pip install mock
pip install schedule && pip install selenium && pip install Selenium-Screenshot && pip install python-dateutil

COPY src/screenshotcode.py /

RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list
RUN apt-get update -y
RUN apt-get install -y google-chrome-stable
RUN apt-get install libxi6 libgconf-2-4 -y

ENV CHROMEDRIVER_VERSION 2.19
ENV CHROMEDRIVER_DIR /chromedriver
RUN mkdir -p $CHROMEDRIVER_DIR

Download and install Chromedriver

RUN wget -q --continue -P $CHROMEDRIVER_DIR "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip"
RUN unzip $CHROMEDRIVER_DIR/chromedriver* -d $CHROMEDRIVER_DIR

Put Chromedriver into the PATH
ENV PATH $CHROMEDRIVER_DIR:$PATH

CMD [ "python", "screenshotcode.py" ]`

This is my python code,

import time
from Screenshot import Screenshot_Clipping
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
from email_it import email_it
from environmental_variables import environmental_variables
from error_alert_email import error_alert_email
from selenium import webdriver

def screenshot():
    ob=Screenshot_Clipping.Screenshot()
    
    chrome_options = Options()
    
    chrome_options.add_argument('--start-maximized')    
    chrome_options.add_argument('--start-fullscreen')
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    
    driver = webdriver.Chrome(executable_path = '$CHROMEDRIVER_DIR:$PATH')

    print('taking screenshot...')
    img_url=ob.full_Screenshot(driver, path = path, image_name = label)

    print('closing driver...')    
    driver.close()

screenshot()

@JoaRiski
Copy link

JoaRiski commented May 11, 2021

Did you try it with the example provided in a single RUN block instead of being spread across multiple?

@rootlinux2
Copy link

rootlinux2 commented Jul 25, 2021

Hi guys, I'm trying to use the single RUN but I'm facing this error:

`debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Configuring tzdata

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

  1. Africa 6. Asia 11. System V timezones
  2. America 7. Atlantic Ocean 12. US
  3. Antarctica 8. Europe 13. None of the above
  4. Australia 9. Indian Ocean
  5. Arctic Ocean 10. Pacific Ocean
    Geographic area: 12
    `
    After selecting the Area the build process is frozen
    I'm using the UBUNTU 20.04 image

FROM public.ecr.aws/ubuntu/ubuntu:20.04

@FL1NT233
Copy link

FL1NT233 commented Jul 28, 2021

@rootlinux I literally have not used github public in so long but I was running into the same issue trying to install chrome in my Dockerfile. Below is what fixed it for me.

# Set up timezone for google-chrom-stable question
ENV TZ=US
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

Hopefully this helps!

@jquinngithub
Copy link

jquinngithub commented Aug 13, 2021

@JoaRiski that is brilliant. Was looking for a way line up stable_dev of chrome with chromedriver but for some reason they don't offer anything of the sort. Thanks for adding this!

+1 - thank you!

Copy link

ghost commented Sep 15, 2021

pull access denied for myapp, repository does not exist or may require 'docker login'
I got that error , what should i do ?

Were you able to fix this issue?
I am also getting same error

@johannstark
Copy link

johannstark commented Sep 27, 2021

I adapted this to fetch the latest version of chrome driver appropriate for the chrome installation, rather than having a fixed value. Here's the snippet I use for installing:

RUN apt-get update && \
    apt-get install -y gnupg wget curl unzip --no-install-recommends && \
    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.list && \
    apt-get update -y && \
    apt-get install -y google-chrome-stable && \
    CHROMEVER=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") && \
    DRIVERVER=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROMEVER") && \
    wget -q --continue -P /chromedriver "http://chromedriver.storage.googleapis.com/$DRIVERVER/chromedriver_linux64.zip" && \
    unzip /chromedriver/chromedriver* -d /chromedriver

This works perfectly !!! 🚀
Thank you so much @JoaRiski

@robertkhaldar
Copy link

robertkhaldar commented Oct 14, 2021

I need this code for GCP as app engine that automatically run the chrome driver as Docker . I put this code but still has error. what should I put the path for chrome driver?

@ian-maurer
Copy link

ian-maurer commented Oct 28, 2021

@robertkhaldar I am having the same issue, I am able to run the dockerfile and I reference the path (/usr/local/bin/chromedriver) in webdriver.ChromeOptions(). I still receive a "Error: Message: 'chromedriver' executable needs to be in PATH. Please see https://chromedriver.chromium.org/home" when executing in my function app.

@danilsmirnov
Copy link

danilsmirnov commented Nov 28, 2021

uname -a local 21.1.0 Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:24 PDT 2021; root:xnu-8019.41.5~1/RELEASE_ARM64_T8101 arm64
my app FROM python:3.9
all code similar, but i get executor failed running [/bin/sh -c apt-get install -y wget xvfb unzip]: exit code: 100 cause of missing apt-get update before
ok, thats fine and easy fixable, but i get Unable to locate package google-chrome-stable


upd
fixed that using --platform linux/x86_64

@petrisorionel
Copy link

petrisorionel commented Jan 14, 2022

this works in my case, FROM python:3.9-slim-bullseye with Debian 11 and Python 3.9.9 and I'm using https://github.com/mherrmann/selenium-python-helium

RUN apt-get update && \
    apt-get install -y gnupg wget curl unzip --no-install-recommends && \
    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/*

ARG CHROME_DRIVER_VERSION
RUN if [ -z "$CHROME_DRIVER_VERSION" ]; \
  then CHROME_MAJOR_VERSION=$(google-chrome --version | sed -E "s/.* ([0-9]+)(\.[0-9]+){3}.*/\1/") \
    && CHROME_DRIVER_VERSION=$(wget --no-verbose -O - "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_MAJOR_VERSION}"); \
  fi \
  && echo "Using chromedriver version: "$CHROME_DRIVER_VERSION \
  && wget --no-verbose -O /tmp/chromedriver_linux64.zip https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip \
  && rm -rf /opt/selenium/chromedriver \
  && unzip /tmp/chromedriver_linux64.zip -d /opt/selenium \
  && rm /tmp/chromedriver_linux64.zip \
  && mv /opt/selenium/chromedriver /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION \
  && chmod 755 /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION \
  && ln -fs /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION /usr/bin/chromedriver

@lane-eb
Copy link

lane-eb commented Jan 25, 2022

Guys, this works for me.

FROM python:3.10.2-bullseye

RUN apt-get update -y
# We need wget to set up the PPA and xvfb to have a virtual screen and unzip to install the Chromedriver
RUN apt-get install -y wget xvfb unzip
# Set up the Chrome PPA
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list
# Update the package list and install chrome
RUN apt-get update -y
RUN apt-get install -y google-chrome-stable
# Set up Chromedriver Environment variables
ENV CHROMEDRIVER_VERSION 97.0.4692.71
ENV CHROMEDRIVER_DIR /chromedriver
RUN mkdir $CHROMEDRIVER_DIR
# Download and install Chromedriver
RUN wget -q --continue -P $CHROMEDRIVER_DIR "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip"
RUN unzip $CHROMEDRIVER_DIR/chromedriver* -d $CHROMEDRIVER_DIR
# Put Chromedriver into the PATH
ENV PATH $CHROMEDRIVER_DIR:$PATH

@mnaumann-plenty
Copy link

mnaumann-plenty commented Mar 2, 2022

To achieve the proper Google Chrome/chromedriver combination, you'll want to heed the instructions on this page: https://chromedriver.chromium.org/downloads/version-selection

Basically, you'll want to get the latest Chrome and install it, then get the product version from that Chrome installation (google-chrome -product-version), use that version information to build the URL to get the correct chromedriver version information from chromedriver.storage.googleapis.com, allowing you to build the specific download URL for the correct chromedriver version.

@bourbiaa
Copy link

bourbiaa commented Mar 15, 2022

@Amogh Katwe
did you get a solutionn ?!

@Anil86
Copy link

Anil86 commented May 3, 2022

Guys, this works for me.

FROM python:3.10.2-bullseye

RUN apt-get update -y
# We need wget to set up the PPA and xvfb to have a virtual screen and unzip to install the Chromedriver
RUN apt-get install -y wget xvfb unzip
# Set up the Chrome PPA
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list
# Update the package list and install chrome
RUN apt-get update -y
RUN apt-get install -y google-chrome-stable
# Set up Chromedriver Environment variables
ENV CHROMEDRIVER_VERSION 97.0.4692.71
ENV CHROMEDRIVER_DIR /chromedriver
RUN mkdir $CHROMEDRIVER_DIR
# Download and install Chromedriver
RUN wget -q --continue -P $CHROMEDRIVER_DIR "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip"
RUN unzip $CHROMEDRIVER_DIR/chromedriver* -d $CHROMEDRIVER_DIR
# Put Chromedriver into the PATH
ENV PATH $CHROMEDRIVER_DIR:$PATH

@lane-eb Thank you

@mnaumann-plenty
Copy link

mnaumann-plenty commented May 3, 2022

This ^^ approach will not work for the long term. If you were to install Google Chrome on most platforms today, your version would be 101.xxx.xxx.xxx -- a version 97 chromedriver won't work with today's Chrome without having to re-determine the chromedriver version and update the Dockerfile accordingly.

Currently, I do this:

RUN apt-get update && \
    apt-get install -y gnupg wget curl unzip --no-install-recommends && \
    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.list && \
    apt-get update -y && \
    apt-get install -y google-chrome-stable && \
    CHROME_VERSION=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") && \
    CHROMEDRIVER_VERSION=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION") && \
    wget -q --continue -P /chromedriver "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip" && \
    unzip /chromedriver/chromedriver* -d /usr/local/bin/

It has worked consistently for several months over several Chrome updates.

@Faq
Copy link

Faq commented Jun 7, 2022

This ^^ approach will not work for the long term. If you were to install Google Chrome on most platforms today, your version would be 101.xxx.xxx.xxx -- a version 97 chromedriver won't work with today's Chrome without having to re-determine the chromedriver version and update the Dockerfile accordingly.

Currently, I do this:

RUN apt-get update && \
    apt-get install -y gnupg wget curl unzip --no-install-recommends && \
    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.list && \
    apt-get update -y && \
    apt-get install -y google-chrome-stable && \
    CHROME_VERSION=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") && \
    CHROMEDRIVER_VERSION=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION") && \
    wget -q --continue -P /chromedriver "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip" && \
    unzip /chromedriver/chromedriver* -d /usr/local/bin/

It has worked consistently for several months over several Chrome updates.

Thank You @mnaumann-plenty, saved my day.

This is up to date version what worked for me with ruby container as it sets correct path with: /usr/local/bin/
Now in container chromedriver responds to: chromedriver -v
And updated it a bit https://gist.github.com/Faq/8821c5fd18dd01da4f80d7435158096d

Copy link

ghost commented Aug 31, 2022

No longer works, i get this error:

#6 85.98 -----END PGP PUBLIC KEY BLOCK-----
#6 85.99 gpg: keyring '/etc/apt/trusted.gpg.d/google.gpg' created
#6 85.99 gpg: no valid OpenPGP data found.
#6 85.99 gpg: Total number processed: 0

@Shk337
Copy link

Shk337 commented Sep 14, 2022

Nono, dude @KexoTV

RUN apt-get update && \
    apt-get install -y gnupg wget curl unzip --no-install-recommends && \
    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.list && \
    apt-get update -y && \
    apt-get install -y google-chrome-stable && \
    CHROME_VERSION=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") && \
    CHROMEDRIVER_VERSION=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION") && \
    wget -q --continue -P /chromedriver "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip" && \
    unzip /chromedriver/chromedriver* -d /usr/local/bin/

its work anyway,

Copy link

ghost commented Sep 16, 2022

this works ty

Nono, dude @KexoTV

RUN apt-get update && \
    apt-get install -y gnupg wget curl unzip --no-install-recommends && \
    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.list && \
    apt-get update -y && \
    apt-get install -y google-chrome-stable && \
    CHROME_VERSION=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") && \
    CHROMEDRIVER_VERSION=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION") && \
    wget -q --continue -P /chromedriver "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip" && \
    unzip /chromedriver/chromedriver* -d /usr/local/bin/

its work anyway,

@bjarneschroeder
Copy link

bjarneschroeder commented Sep 21, 2022

Nono, dude @KexoTV

RUN apt-get update && \
    apt-get install -y gnupg wget curl unzip --no-install-recommends && \
    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.list && \
    apt-get update -y && \
    apt-get install -y google-chrome-stable && \
    CHROME_VERSION=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") && \
    CHROMEDRIVER_VERSION=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION") && \
    wget -q --continue -P /chromedriver "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip" && \
    unzip /chromedriver/chromedriver* -d /usr/local/bin/

its work anyway,

No longer works for me:

 => [internal] load build definition from Dockerfile                                                                                                                                            0.0s
 => => transferring dockerfile: 1.79kB                                                                                                                                                          0.0s
 => [internal] load .dockerignore                                                                                                                                                               0.0s
 => => transferring context: 35B                                                                                                                                                                0.0s
 => [internal] load metadata for docker.io/library/python:3.10                                                                                                                                  1.2s
 => CACHED [ 1/11] FROM docker.io/library/python:3.10@sha256:e9c35537103a2801a30b15a77d4a56b35532c964489b125ec1ff24f3d5b53409                                                                   0.0s
 => => resolve docker.io/library/python:3.10@sha256:e9c35537103a2801a30b15a77d4a56b35532c964489b125ec1ff24f3d5b53409                                                                            0.0s
 => [internal] load build context                                                                                                                                                               0.0s
 => => transferring context: 1.17kB                                                                                                                                                             0.0s
 => ERROR [ 2/11] RUN apt-get update &&     apt-get install -y gnupg wget curl unzip --no-install-recommends &&     wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-k  4.7s
------                                                                                                                                                                                               
 > [ 2/11] RUN apt-get update &&     apt-get install -y gnupg wget curl unzip --no-install-recommends &&     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.list &&     apt-get update -y &&     apt-get install -y google-chrome-stable &&     CHROME_VERSION=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") &&     CHROMEDRIVER_VERSION=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION") &&     wget -q --continue -P /chromedriver "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip" &&     unzip /chromedriver/chromedriver* -d /usr/local/bin/:             
#5 0.269 Get:1 http://deb.debian.org/debian bullseye InRelease [116 kB]                                                                                                                              
#5 0.337 Get:2 http://deb.debian.org/debian-security bullseye-security InRelease [48.4 kB]
#5 0.358 Get:3 http://deb.debian.org/debian bullseye-updates InRelease [44.1 kB]
#5 0.410 Get:4 http://deb.debian.org/debian bullseye/main arm64 Packages [8071 kB]
#5 1.744 Get:5 http://deb.debian.org/debian-security bullseye-security/main arm64 Packages [182 kB]
#5 1.769 Get:6 http://deb.debian.org/debian bullseye-updates/main arm64 Packages [2604 B]
#5 2.391 Fetched 8464 kB in 2s (3813 kB/s)
#5 2.391 Reading package lists...
#5 2.658 Reading package lists...
#5 2.919 Building dependency tree...
#5 2.991 Reading state information...
#5 3.074 curl is already the newest version (7.74.0-1.3+deb11u3).
#5 3.074 gnupg is already the newest version (2.2.27-2+deb11u2).
#5 3.074 unzip is already the newest version (6.0-26+deb11u1).
#5 3.074 wget is already the newest version (1.21-1+deb11u1).
#5 3.074 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#5 3.113 Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
#5 3.685 OK
#5 3.759 Hit:1 http://deb.debian.org/debian bullseye InRelease
#5 3.777 Hit:2 http://deb.debian.org/debian-security bullseye-security InRelease
#5 3.804 Hit:3 http://deb.debian.org/debian bullseye-updates InRelease
#5 3.912 Get:4 http://dl.google.com/linux/chrome/deb stable InRelease [1811 B]
#5 4.029 Fetched 1811 B in 0s (5594 B/s)
#5 4.029 Reading package lists...
#5 4.289 Reading package lists...
#5 4.543 Building dependency tree...
#5 4.611 Reading state information...
#5 4.657 E: Unable to locate package google-chrome-stable

Update: I dug into the problem a little bit more and figured out that the command only does not work on my Docker instance running on my M1 Mac. I guess it has to do with this?
https://askubuntu.com/questions/1383789/install-chrome-on-ubuntu-debian-with-arm64

The command still works on docker instances on other devices. 👍

@mnaumann-plenty
Copy link

mnaumann-plenty commented Sep 21, 2022

@bjarneschroeder :
That seems likely. You can likely locally amend the solution to be geared toward Chromium, specifically these two lines:

    apt-get install -y google-chrome-stable && \
    CHROME_VERSION=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") && \

...having the first of the two install Chromium and the second to use the Chromium executable to yield the product version. I haven't explored this locally but exchanging Chromium for Chrome ought to work.

@jmart1
Copy link

jmart1 commented Nov 14, 2022

I adapted this to fetch the latest version of chrome driver appropriate for the chrome installation, rather than having a fixed value. Here's the snippet I use for installing:

RUN apt-get update && \
    apt-get install -y gnupg wget curl unzip --no-install-recommends && \
    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.list && \
    apt-get update -y && \
    apt-get install -y google-chrome-stable && \
    CHROMEVER=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") && \
    DRIVERVER=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROMEVER") && \
    wget -q --continue -P /chromedriver "http://chromedriver.storage.googleapis.com/$DRIVERVER/chromedriver_linux64.zip" && \
    unzip /chromedriver/chromedriver* -d /chromedriver

@JoaRiski Epic. Thank you for sharing.

@raine
Copy link

raine commented Nov 27, 2022

If you have M1 Mac, you have to build with docker build --platform linux/amd64 ....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment