Одно время я много занимался сайтами, в том числе ускорением их работы. И webpagetest использовал постоянно. У меня была и локальная версия, и публичная, с подключением агентов из разных локаций. Я даже в общий доступ выставлял этот сервис и видел, что люди им пользуются.
Решил на днях посмотреть свежую версию и немного расстроился, не увидев готового образа Docker для быстрой установки сервиса. Установить можно и вручную. Я так делал, но это хлопотное занятие, так как сервис многокомпонентный. Не знаю, почему разработчики перестали сами его собирать.
Хорошая новость в том, что всё для сборки образа есть, но придётся это делать самостоятельно. В репозитории Docker Compose файл и краткая инструкция для сборки. Я стал собирать и столкнулся с множеством проблем. Со всеми в итоге разобрался и запустил у себя локальный сервис webpagetest. Рассказываю, как это сделал.
Для начала клонируем к себе репозиторий (он очень большой, 1 ГБ):
# git clone https://github.com/WPO-Foundation/webpagetest.gitВ корне лежит файл
docker-compose.yml, в котором инструкции для сборки с отсылкой к конфигам в docker/local. На момент написания заметки в Dockerfile-php есть проблемы. Я нашёл готовый Pull Request с решением это проблемы с зависимостями. Возможно вскоре он будет принят, но пока рабочий Dockerfile-php можно взять в форке от одного автора. Второй момент - не собирался wptagent. Я его просто отключил, так как сам по себе он с сервером не связан. Его можно собрать и подключить отдельно. Так что закомментировал в композе всё, что связано с агентом:
# agent:# cap_add: #### Allows traffic shapping# - NET_ADMIN# build:# context: .# dockerfile: docker/local/Dockerfile-wptagent# command: python3 wptagent.py -vvvv --xvfb --dockerized --server http://web/work/ --location Test --key 1То есть в исходном
docker-compose.yml закомментировал строки с агентом и полностью заменил файл /docker/local/Dockerfile-php. Далее собрал сервер:# docker-compose upОн соберётся и запустится на 80-м порту сервера. Можно зайти по IP адресу. На странице http://172.26.180.29/install/ можно посмотреть информацию об установке и о подключенных агентах. Скорее всего у вас будет проблема с правами доступа на корневую директорию сервера. Я не стал разбираться, от какого пользователя он стартует и какие конкретно права нужны. Для теста просто дал права 0777 на всю папку www в корне репозитория:
# chmod -R 0777 www/Теперь нам нужно подключить агента. Он может быть запущен как тут же в докере, так и на любом другом сервере. В этом и удобство webpagetest. Вы можете запустить сервер и любое количество агентов в разных местах.
На dockerhub есть собранный агент двухлетней давности. Я не стал его использовать, а собрал свежий из репозитория WebPageTest.agent. По инструкции всё собралось без проблем. После этого запускаем агента, прицепив его к нашему серверу. Перед этим нужно один модуль ядра загрузить:
# modprobe ifb numifbs=1# docker run -d \ -e SERVER_URL="http://172.26.180.29/work/" \ -e LOCATION="Test" \ -e NAME="Test" \ -e KEY="123456789" \ --cap-add=NET_ADMIN \ --init \ wptagentПараметры в переменных обусловлены настройками Location на сервере в момент сборки, которые живут в
docker/local/wptconfig. После этого через пару минут на сервере на странице http://172.26.180.29/install/ вы должны увидеть подключенного агента. После этого сервис полностью готов к выполнению тестов. Если вам интересен этот сервис, то полное описание настройки есть у меня на сайте. Ни логика работы, ни формат конфигов не изменились. Разница только в том, что контейнеры нужно собирать самому.
#webpagetest