Skip to content

Building browser images

The images repository ships a Go tool that builds Docker images for every supported browser. Docker build files are embedded in the binary, so one command produces a complete image.

Each image consists of 3 layers:

  1. Base layer — everything every image needs: Xvfb, fonts for all major scripts (Latin, Cyrillic, CJK, Indic, Thai, Arabic, emoji), all UTF-8 locales, timezone data, x11vnc and PulseAudio. Built once as websummoner/browser-base.
  2. Browser layer — the browser binary, installed from the vendor’s official package repository or from a .deb file.
  3. Driver layer — the matching WebDriver binary (or the WebSummoner server for the Selenium-based Firefox variant).
Terminal window
git clone https://github.com/WebSummoner/images.git
cd images
go build
./images --help

The -b flag always takes an exact package version — partial versions are not resolved, and a version the vendor never published fails the build instead of silently falling back to something else.

Terminal window
# Chrome (version is the google-chrome-stable package version)
./images chrome -b 152.0.7977.64-1 -t websummoner/chrome:152
# Firefox (version is the Mozilla apt package version)
./images firefox -b 155.0~build1 -t websummoner/firefox:155
# Edge (driver version must match the browser version)
./images edge -b 152.0.4191.53-1 -d 152.0.4191.53 -t websummoner/edge:152
# Opera (omit -d: the driver is resolved automatically, see the note below)
./images opera -b 135.0.5973.66-1 -t websummoner/opera:135
# Yandex (driver version is the YandexDriver Linux asset version)
./images yandex -b 26.6.1.1083-1 -d 26.6.1 -t websummoner/yandex:26.6

Omitting -d (or passing latest) lets the tool pick the newest matching driver. For Brave, the tool detects the embedded Chromium version from the built image and downloads the matching chromedriver automatically.

To build from a local Debian package instead of a repository, pass the file path — the file name must contain the full version, because the tool derives the browser version from it:

Terminal window
./images firefox -b /path/to/firefox_155.0.0_amd64.deb -t websummoner/firefox:155

Add --test to run the container test suite after building (requires the websummoner-container-tests checkout next to the images repository), and --push to push the image to the registry.

Images published by RIADVICE follow the tag policy: a floating line tag, a major.minor alias and an immutable full-version pin. When building for yourself, pass several -t flags to apply the same convention.

The --channel flag selects a non-stable package for browsers that publish one in the same repository:

BrowserChannelPackage
Chromebetagoogle-chrome-beta
Chromedevgoogle-chrome-unstable
Edgebetamicrosoft-edge-beta
Edgedevmicrosoft-edge-dev
Operabetaopera-beta
Operadevopera-developer

Firefox channel variants previously relied on Ubuntu PPAs that no longer exist; build from a .deb file of the desired channel instead.