Назад | Перейти на главную страницу

Использование PhantomJS в Docker Alpine

Я пытаюсь использовать Jenkins в качестве контейнера докеров. Для этого я использую официальный образ докера. Поскольку у нас есть некоторые тесты интеграции, основанные на Selenium (на самом деле, Vaadin Workbench), мне нужно запускать phantomjs как без головы. Тесты выполняются правильно, как и перед докеризацией. Мое веб-приложение (сервер) выполняется правильно, а phantomjs запускается позже в качестве клиента и правильно выполняет все тесты. Это ожидаемое поведение.

Теперь мне нравится идея использовать Дженкинса в альпийский система. Обычно я использую alpine в других контейнерах докеров из-за его небольшого размера. Официальный образ Jenkins docker также имеет образ на основе alpine, который я могу использовать. В общем, у меня нет проблем с другими инструментами, которые мне нужно установить (доступными, ...). И они отлично работают в альпийской версии. Но у меня проблема с фантомами.

Прежде всего, я устанавливаю phantomjs из проекта github, в котором есть альпийская компиляция. Вот какие команды я использую:

RUN apk --no-cache add fontconfig && \
mkdir -p /usr/share && \
curl -L https://github.com/Overbryd/docker-phantomjs-alpine/releases/download/2.11/phantomjs-alpine-x86_64.tar.bz2 | tar xj --directory /usr/share && \
chmod +x /usr/share/phantomjs/phantomjs && \
ln -s /usr/share/phantomjs/phantomjs /usr/bin/phantomjs

Вроде нормально работает. Если я получу доступ к контейнеру докеров с помощью docker exec -it jenkins sh, Я могу выполнить phantomjs из командной строки. Но когда Дженкинс выполняет тесты, у меня возникает такая ошибка:

WebDriverException: Timed out waiting for driver server to start

Перед началом любого теста. Сервер приложений запущен (я могу подключиться к нему из своего браузера), но Дженкинс не может запустить phantomjs для его подключения. Я проверил журналы phantomjs чтобы узнать, является ли это проблемой, но у него есть права на запись (файл все равно пуст). Тем не менее я могу выполнить phantomjs из командной строки, но jenkins + selenium не может.

Конечно, запускать jenkins на альпийской машине не обязательно, и теперь я возвращаюсь к стандартному образу докера, основанному на openjdk. Но теперь мне интересно узнать об этой проблеме, и я не уверен, является ли это проблемой phantomjs или альпийской проблемой. Или, может быть, мне нужна дополнительная конфигурация или пакеты для запуска phantomjs в alpine.

Есть ли у кого-нибудь такая же проблема при использовании jenkins + alpine + selenium (или аналога)? Любая подсказка о том, что может вызвать эту ошибку?