Created
November 4, 2015 20:53
-
-
Save jp/6072b62804c1f945b347 to your computer and use it in GitHub Desktop.
Protractor / Selenium Dockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM library/java:8-jre | |
ENV NODE_VERSION 4.2.0 | |
ENV NVM_DIR /usr/local/nvm | |
ENV DISPLAY :10 | |
ENV DEBIAN_FRONTEND noninteractive | |
# Replace shell with bash so we can source files | |
RUN rm /bin/sh && ln -s /bin/bash /bin/sh | |
# Set debconf to run non-interactively | |
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections | |
RUN apt-get update | |
RUN apt-get install -y \ | |
curl \ | |
xvfb \ | |
libgconf-2-4 \ | |
libexif12 \ | |
supervisor \ | |
netcat-traditional | |
# install ffmpeg | |
RUN curl http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2015.6.1_all.deb \ | |
-o /tmp/deb-multimedia-keyring_2015.6.1_all.deb && \ | |
dpkg -i /tmp/deb-multimedia-keyring_2015.6.1_all.deb && \ | |
rm /tmp/deb-multimedia-keyring_2015.6.1_all.deb | |
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - | |
RUN echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list && \ | |
echo "deb http://www.deb-multimedia.org jessie main non-free" >> /etc/apt/sources.list && \ | |
echo "deb http://www.deb-multimedia.org jessie-backports main" >> /etc/apt/sources.list | |
RUN apt-get update | |
RUN apt-get install -y \ | |
# ffmpeg \ | |
google-chrome-stable | |
# remove packages & listings to reduce image size | |
RUN apt-get clean && rm -rf /var/lib/apt/lists/* | |
RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash \ | |
&& source $NVM_DIR/nvm.sh \ | |
&& nvm install $NODE_VERSION \ | |
&& nvm alias default $NODE_VERSION \ | |
&& nvm use default | |
ENV NODE_PATH $NVM_DIR/versions/node/v$NODE_VERSION/lib/node_modules | |
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH | |
RUN ln -s $NVM_DIR/versions/node/v$NODE_VERSION/bin/node /usr/bin/node | |
RUN npm install -g protractor | |
RUN echo -e "[program:xvfb]\n\ | |
command=Xvfb :10 -extension RANDR -noreset -ac -screen 10 1920x1200x16\n\ | |
process_name=%(program_name)s\n\ | |
numprocs=1\n\ | |
numprocs_start=0\n\ | |
priority=999\n\ | |
autostart=true\n\ | |
autorestart=true\n\ | |
startsecs=1\n\ | |
startretries=3\n\ | |
exitcodes=0,2\n\ | |
stopsignal=TERM\n\ | |
stopwaitsecs=10\n\ | |
user=root\n\ | |
redirect_stderr=false\n\ | |
stdout_logfile=AUTO\n\ | |
stdout_logfile_maxbytes=50MB\n\ | |
stdout_logfile_backups=10\n\ | |
stdout_capture_maxbytes=0\n\ | |
stdout_events_enabled=false\n\ | |
stderr_logfile=AUTO\n\ | |
stderr_logfile_maxbytes=50MB\n\ | |
stderr_logfile_backups=10\n\ | |
stderr_capture_maxbytes=0\n\ | |
stderr_events_enabled=false\n\ | |
directory=/root\n\ | |
serverurl=AUTO" > /etc/supervisor/conf.d/xvfb.conf | |
RUN echo -e "[program:webdriver]\n\ | |
command=$NVM_DIR/versions/node/v$NODE_VERSION/bin/webdriver-manager start --seleniumPort 3003\n\ | |
process_name=%(program_name)s\n\ | |
numprocs=1\n\ | |
numprocs_start=0\n\ | |
priority=999\n\ | |
autostart=true\n\ | |
autorestart=true\n\ | |
startsecs=1\n\ | |
startretries=3\n\ | |
exitcodes=0,2\n\ | |
stopsignal=TERM\n\ | |
stopwaitsecs=10\n\ | |
user=node\n\ | |
redirect_stderr=false\n\ | |
stdout_logfile=AUTO\n\ | |
stdout_logfile_maxbytes=50MB\n\ | |
stdout_logfile_backups=10\n\ | |
stdout_capture_maxbytes=0\n\ | |
stdout_events_enabled=false\n\ | |
stderr_logfile=AUTO\n\ | |
stderr_logfile_maxbytes=50MB\n\ | |
stderr_logfile_backups=10\n\ | |
stderr_capture_maxbytes=0\n\ | |
stderr_events_enabled=false\n\ | |
directory=/tmp/\n\ | |
serverurl=AUTO" > /etc/supervisor/conf.d/webdriver.conf | |
# Install Selenium and Chrome driver | |
RUN webdriver-manager update | |
# Add a non-privileged user for running Protrator | |
RUN adduser --home /project --uid 1000 \ | |
--disabled-login --disabled-password --gecos node node | |
# Container's entry point, executing supervisord in the foreground | |
CMD ["/usr/bin/supervisord", "-n"] | |
VOLUME ["/scenarios"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment