Skip to content

Instantly share code, notes, and snippets.

@sergey-chechaev
Last active June 14, 2023 11:50
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save sergey-chechaev/ef6f19a5515a298f3f68ab15c862c566 to your computer and use it in GitHub Desktop.
Save sergey-chechaev/ef6f19a5515a298f3f68ab15c862c566 to your computer and use it in GitHub Desktop.
Selenoid Mac M1

Готовый образ под M1 selenoid dumbdumbych/selenium_vnc_chrome_arm64:91.0.b

  1. Скачиваем рабочий образ под m1
docker pull dumbdumbych/selenium_vnc_chrome_arm64:91.0.b
  1. Создаем в папке config файл browsers.json со следующим содержимым
{
    "chrome": {
        "default": "chrome",
        "versions": {
            "91.0": {
                "image": "dumbdumbych/selenium_vnc_chrome_arm64:91.0.b",
                "port": "4444",
                "path": "/",
                "privileged": true
            }
        }
    }
}
  1. В директории где находится папка config запускаем docker с образом selenoid
docker run -d                                   \
--name selenoid                                 \
-p 4444:4444                                    \
-v /var/run/docker.sock:/var/run/docker.sock    \
-v `pwd`/config/:/etc/selenoid/:ro              \
--privileged                                    \
aerokube/selenoid:latest-release                \
-service-startup-timeout 1m
  1. Проверяем что по адресу localhost:4444 запускается selenoid и пишется статус:
You are using Selenoid 1.10.4!
  1. Скачиваем и запускаем selenoid-ui
docker run -d         \
    --name selenoid-ui  \
    --link selenoid     \
    -p 8080:8080        \
    aerokube/selenoid-ui --selenoid-uri=http://selenoid:4444
  1. Переходим на localhost:8080 и проверяем что SSE и SELENOID находятся в статусе connected
@kaifaty
Copy link

kaifaty commented Mar 21, 2022

Привет, подскажи пожалуйста, а как сделать билд? Просто нужная 97 версия)

@DmitrySkripkin
Copy link

DmitrySkripkin commented Apr 7, 2022

Очень нужна информация о том как собирался этот образ

@sergey-chechaev
Copy link
Author

Очень нужна информация о том как собирался этот образ

Напишите в телегу @sergey_com

@sergey-chechaev
Copy link
Author

Как собрать билд самому:

Подготавливаем среду для сборки:


export DOCKER_CLI_EXPERIMENTAL=enabled
docker buildx version
docker run --rm --privileged docker/binfmt:a7996909642ee92942dcd6cff44b9b95f08dad64
cat /proc/sys/fs/binfmt_misc/qemu-aarch64    -> в выводе должно быть enabled
docker buildx create --name armbuilder 
docker buildx ls -> в выводе должен быть armbuilder
docker buildx use armbuilder
docker buildx inspect --bootstrap

Собираем базовый образ:

mkdir /opt/arm64 && cd /opt/arm64 
git clone https://github.com/aerokube/images
cd images/selenium/base
Кладем в эту папку файл Dockerfile.base
собираем образ (в команде надо указать свой аккаунт на hub.docker.com и имя базового образа)
docker buildx build --progress=plain  --platform linux/arm64 --file ./Dockerfile.base --tag ${hub.docker.com account}/${image name and version} -o type=docker .
например:
docker buildx build --progress=plain  --platform linux/arm64 --file ./Dockerfile.base --tag dumbdumbych/selenium_base:u2010-en_ru_utf8.a -o type=docker . (точка в конце команды нужна)
Загружаем образ на докерхаб:
docker login
docker push ${hub.docker.com account}/${image name and version}

У меня базовый образ собирается долго, до 20 минут.


Собираем образ с хромом:
cd /opt/arm64/images/static/chrome
Сначала надо скачать chromedriver. Я не уверен, что это обязательно, но наверное лучше чтобы версия хромиума и chromedriver совпадали. Поэтому заглядываем на страничку репозитория с хромиумом:
https://launchpad.net/~saiarcot895/+archive/ubuntu/chromium-beta/+packages
и смотрим текущую версию chromium-browser. На момент написания инструкции она была 91.

Линки на разные версии хромдрайвера доступны здесь: https://stackoverflow.com/questions/38732822/compile-chromedriver-on-arm
Скачиваем хромдрайвер 91-й версии: wget https://github.com/electron/electron/releases/download/v13.0.1/chromedriver-v13.0.1-linux-arm64.zip
Распаковываем из архива chromedriver:
unzip ./chromedriver-v13.0.1-linux-arm64.zip chromedriver
Кладем в эту же папку (/opt/arm64/images/static/chrome) файлы chromium.pref, saiarcot895-ubuntu-chromium-beta-groovy.list и Dockerfile.chrome
В Dockerfile.chrome в 12-й строке указывается имя базового образа, который мы только что собрали. Туда нужно подставить свои данные ${hub.docker.com account}/${image name and version} из сборки базового образа

Запускаем сборку:
docker buildx build --progress=plain --platform linux/arm64 --file ./Dockerfile.chrome --tag ${hub.docker.com account}/selenium_vnc_chrome_arm64:91.0.a -o type=docker .

@sergey-chechaev
Copy link
Author

Привет, подскажи пожалуйста, а как сделать билд? Просто нужная 97 версия)

Кинул инструкцию

@sergey-chechaev
Copy link
Author

docker run --rm --privileged docker/binfmt:a7996909642ee92942dcd6cff44b9b95f08dad64

docker run --rm --privileged --platform linux/amd64 docker/binfmt:a7996909642ee92942dcd6cff44b9b95f08dad64

Собирал на ubuntu, если собираешь прям на m1 то да

@ValeriiBaidin
Copy link

спасибо за образ.
Передаю "env":["LANG=ru_RU.UTF-8","LANGUAGE=ru:en","LC_ALL=ru_RU.UTF-8"]
в 4444/status отобразается переманная
но не влиет на хром.
В чем может быть проблема, не подскажите?
Большое спасибо!!!

@vadzveni
Copy link

Can you help, please.
a7996909642ee92942dcd6cff44b9b95f08dad64: Pulling from docker/binfmt
docker: no matching manifest for linux/arm64/v8 in the manifest list entries.

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