Virtualize Selenium ( 셀레니움 가상화 )
오늘 포스트는 도커, 파이썬을 활용해서 셀레니움을 가상화할 수 있도록 지원해주는 오픈소스 툴에 대한 정리입니다.
docker option 설명 [인용]
-p, --publish=[]: 호스트에 연결된 컨테이너의 특정 포트를 외부에 노출합니다. 보통 웹 서버의 포트를 노출할 때 주로 사용합니다.
- <호스트 포트>:<컨테이너 포트> 예) -p 80:80
- <IP 주소>:<호스트 포트>:<컨테이너 포트> 호스트에 네트워크 인터페이스가 여러 개이거나 IP 주소가 여러 개 일 때 사용합니다. 예) -p 192.168.0.10:80:80
- <IP 주소>::<컨테이너 포트> 호스트 포트를 설정하지 않으면 호스트의 포트 번호가 무작위로 설정됩니다. 예) -p 192.168.0.10::80
- <컨테이너 포트> 컨테이너 포트만 설정하면 호스트의 포트 번호가 무작위로 설정됩니다. 예) -p 80
[1] firefox-headless-selenium-python
https://github.com/juusechec/docker-firefox-headless-selenium-python
juusechec/docker-firefox-headless-selenium-python
Docker container with python and selenium with firefox - juusechec/docker-firefox-headless-selenium-python
github.com
Dockerfile
FROM ubuntu:17.10 ENV LC_ALL C ENV DEBIAN_FRONTEND noninteractive ENV DEBCONF_NONINTERACTIVE_SEEN true MAINTAINER Jorge Useche <juusechec@gmail.com> USER root # Install dependencies RUN apt-get -qqy update RUN apt-get -qqy --no-install-recommends install \ wget \ firefox \ x11vnc \ xvfb \ xfonts-100dpi \ xfonts-75dpi \ xfonts-scalable \ xfonts-cyrillic \ openjdk-8-jre-headless \ python3-pip \ curl \ && rm -rf /var/lib/apt/lists/* /var/cache/apt/* RUN pip3 install selenium # Create user for use selenium-server-standalone RUN useradd -d /home/seleuser -m seleuser RUN mkdir -p /home/seleuser/chrome RUN chown -R seleuser /home/seleuser RUN chgrp -R seleuser /home/seleuser RUN wget https://selenium-release.storage.googleapis.com/3.6/selenium-server-standalone-3.6.0.jar \ && mv selenium-server-standalone-*.jar /home/seleuser/selenium-server-standalone.jar RUN wget https://github.com/mozilla/geckodriver/releases/download/v0.19.0/geckodriver-v0.19.0-linux64.tar.gz -O /tmp/geckodriver.tar.gz \ && tar -xzf /tmp/geckodriver.tar.gz -C /usr/bin && rm -rf /tmp/geckodriver.tar.gz # Run at begin ADD ./scripts/ /home/root/scripts EXPOSE 4444 5999 CMD ["sh", "/home/root/scripts/start.sh"]
[2] dockselpy
https://github.com/dimmg/dockselpy
dimmg/dockselpy
Dockerized Selenium and Python with support for Chrome, Firefox and PhantomJS - dimmg/dockselpy
github.com
Dockerfile - dockselpy
FROM ubuntu:bionic RUN apt-get update && apt-get install -y \ python3 python3-pip \ fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 \ libnspr4 libnss3 lsb-release xdg-utils libxss1 libdbus-glib-1-2 \ curl unzip wget \ xvfb # install geckodriver and firefox RUN GECKODRIVER_VERSION=`curl https://github.com/mozilla/geckodriver/releases/latest | grep -Po 'v[0-9]+.[0-9]+.[0-9]+'` && \ wget https://github.com/mozilla/geckodriver/releases/download/$GECKODRIVER_VERSION/geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz && \ tar -zxf geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz -C /usr/local/bin && \ chmod +x /usr/local/bin/geckodriver && \ rm geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz RUN FIREFOX_SETUP=firefox-setup.tar.bz2 && \ apt-get purge firefox && \ wget -O $FIREFOX_SETUP "https://download.mozilla.org/?product=firefox-latest&os=linux64" && \ tar xjf $FIREFOX_SETUP -C /opt/ && \ ln -s /opt/firefox/firefox /usr/bin/firefox && \ rm $FIREFOX_SETUP # install chromedriver and google-chrome RUN CHROMEDRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` && \ wget https://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip && \ unzip chromedriver_linux64.zip -d /usr/bin && \ chmod +x /usr/bin/chromedriver && \ rm chromedriver_linux64.zip RUN CHROME_SETUP=google-chrome.deb && \ wget -O $CHROME_SETUP "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" && \ dpkg -i $CHROME_SETUP && \ apt-get install -y -f && \ rm $CHROME_SETUP # install phantomjs RUN wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 && \ tar -jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 && \ cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs && \ rm phantomjs-2.1.1-linux-x86_64.tar.bz2 RUN pip3 install selenium RUN pip3 install pyvirtualdisplay ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8 ENV PYTHONUNBUFFERED=1 ENV APP_HOME /usr/src/app WORKDIR /$APP_HOME COPY . $APP_HOME/ CMD tail -f /dev/null # CMD python3 example.py
Dockerfile - dockselpy for firefox
FROM ubuntu:bionic RUN apt-get update && apt-get install -y \ python3 python3-pip \ fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 \ libnspr4 libnss3 lsb-release xdg-utils libxss1 libdbus-glib-1-2 \ curl unzip wget \ xvfb # install geckodriver and firefox RUN GECKODRIVER_VERSION=`curl https://github.com/mozilla/geckodriver/releases/latest | grep -Po 'v[0-9]+.[0-9]+.[0-9]+'` && \ wget https://github.com/mozilla/geckodriver/releases/download/$GECKODRIVER_VERSION/geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz && \ tar -zxf geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz -C /usr/local/bin && \ chmod +x /usr/local/bin/geckodriver && \ rm geckodriver-$GECKODRIVER_VERSION-linux64.tar.gz RUN FIREFOX_SETUP=firefox-setup.tar.bz2 && \ apt-get purge firefox && \ wget -O $FIREFOX_SETUP "https://download.mozilla.org/?product=firefox-latest&os=linux64" && \ tar xjf $FIREFOX_SETUP -C /opt/ && \ ln -s /opt/firefox/firefox /usr/bin/firefox && \ rm $FIREFOX_SETUP RUN pip3 install selenium RUN pip3 install pyvirtualdisplay ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8 ENV PYTHONUNBUFFERED=1 ENV APP_HOME /usr/src/app WORKDIR /$APP_HOME COPY . $APP_HOME/ CMD tail -f /dev/null # CMD python3 example.py (실행하고자 하는 python 파일명)
반응형
'Open source > Docker' 카테고리의 다른 글
[Open source] Docker - 03. 시스템 가용성 체크 / 제한 (0) | 2020.03.02 |
---|---|
[Open source] Docker - 01. 기본 가이드 및 명령어 (0) | 2019.12.07 |