Настройка Selenium Firefox Docker с приложением Gunicorn Flask
Я выбрал Firefox 45.0.2 и Selenium 2.53.1, потому что могу доверять этой комбинации.
Давайте обсудим **Docker-file**
по частям.
Установка Firefox
**# Установка Firefox**RUN wget [https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/45.0.2/linux-x86_64/en-US/firefox-45.0.2.tar.bz2](https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/45.0.2/linux-x86_64/en-US/firefox-45.0.2.tar.bz2)RUN tar -xjvf firefox*.tar.bz2RUN mv firefox /opt/firefoxRUN ln -sf /opt/firefox/firefox /usr/bin/firefox
Установка Xvfb(X Virtual framebuffer)
**# Установка xvfb**RUN apt-get install -y xvfb
Xvfb позволяет запускать графические приложения без отображения.
**# Переменные окружения**ENV DISPLAY=:10
Установка libasound2
RUN apt-get install -y [libasound2](https://launchpad.net/ubuntu/xenial/amd64/libasound2/1.1.0-0ubuntu1)
Установка Gunicorn
RUN apt-get update -yRUN apt-get install -y python3-pip build-essential python3-dev nginxRUN pip install -U gunicorn
Expose 5056
#порт для запуска Flask-приложения
Взгляните на Dockerfile сейчас
Requirements.txt
selenium==2.53.1Flask==1.0.2
Настройка Flask api
Простое Flask-приложение для извлечения HTML с помощью GET-запроса к URL.
Установка GUnicorn (Green Unicorn)
Это Python WSGI (Web Server Gateway Interface) HTTP-сервер. Чтобы запустить Flask API, мы должны создать файл wsgi.py и импортировать приложение.
Теперь нам нужно запустить Xvfb в фоновом режиме каждый раз, когда вызывается экземпляр Docker, вместе с сервером Gunicorn. Лучший способ выполнить оба задания - использовать shell-скрипт с ENTRYPOINT
в Docker.
ENTRYPOINT [“sh”, “start.sh”]
Убедитесь, что Xvfb port
и переменная среды $DISPLAY
совпадают. В этом руководстве оба установлены как :10
.
Полный код этого проекта можно увидеть здесь. Подробные шаги по созданию Docker-образа и запуску Flask API с веб-драйвером Selenium указаны в проекте.
Подтверждение
Когда все настроено, введите [http://localhost:5056/pageSource?url=https://httpbin.org/ip](http://localhost:5056/pageSource?url=https%3A%2F%2Fhttpbin.org%2Fip)
в браузере.
Спасибо за чтение! Если вам понравилась концепция, пожалуйста, не забудьте подтвердить мои навыки на Linkedin. Пожалуйста, поаплодируйте и поделитесь, если вам понравилось.