From 2412f6bd732edae709b72a4ecbf7d5aa6be15026 Mon Sep 17 00:00:00 2001 From: rubytester Date: Tue, 9 Jun 2015 17:11:21 -0500 Subject: [PATCH 1/2] FROM field in each Dockerfile is version specific fix issue #1 example: VERSION=local make ball should build all Dockerfile FROM field with 'local' tag --- Hub/Dockerfile.txt | 25 ++++++++++++++++++++++++ Hub/generate.sh | 5 +++++ Makefile | 20 +++++++++++++++---- NodeBase/Dockerfile.txt | 38 +++++++++++++++++++++++++++++++++++++ NodeBase/generate.sh | 5 +++++ NodeChrome/Dockerfile.txt | 39 ++++++++++++++++++++++++++++++++++++++ NodeChrome/generate.sh | 5 +++++ NodeFirefox/Dockerfile.txt | 18 ++++++++++++++++++ NodeFirefox/generate.sh | 5 +++++ 9 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 Hub/Dockerfile.txt create mode 100755 Hub/generate.sh create mode 100644 NodeBase/Dockerfile.txt create mode 100755 NodeBase/generate.sh create mode 100644 NodeChrome/Dockerfile.txt create mode 100755 NodeChrome/generate.sh create mode 100644 NodeFirefox/Dockerfile.txt create mode 100755 NodeFirefox/generate.sh diff --git a/Hub/Dockerfile.txt b/Hub/Dockerfile.txt new file mode 100644 index 0000000000..2950a20226 --- /dev/null +++ b/Hub/Dockerfile.txt @@ -0,0 +1,25 @@ +MAINTAINER Selenium + +#======================== +# Selenium Configuration +#======================== + +EXPOSE 4444 + +ENV GRID_NEW_SESSION_WAIT_TIMEOUT -1 +ENV GRID_JETTY_MAX_THREADS -1 +ENV GRID_NODE_POLLING 5000 +ENV GRID_CLEAN_UP_CYCLE 5000 +ENV GRID_TIMEOUT 30000 +ENV GRID_BROWSER_TIMEOUT 0 +ENV GRID_MAX_SESSION 5 +ENV GRID_UNREGISTER_IF_STILL_DOWN_AFTER 30000 + +COPY generate_config /opt/selenium/generate_config +COPY entry_point.sh /opt/bin/entry_point.sh +RUN chown -R seluser /opt/selenium + +USER seluser + +CMD ["/opt/bin/entry_point.sh"] + diff --git a/Hub/generate.sh b/Hub/generate.sh new file mode 100755 index 0000000000..19987b5128 --- /dev/null +++ b/Hub/generate.sh @@ -0,0 +1,5 @@ +#!/bin/bash +VERSION=$1 + +echo FROM selenium/base:$VERSION > ./Dockerfile +cat ./Dockerfile.txt >> ./Dockerfile diff --git a/Makefile b/Makefile index 58d5ad3978..44fa51d884 100644 --- a/Makefile +++ b/Makefile @@ -11,16 +11,28 @@ ci: build test base: cd ./Base && docker build -t $(NAME)/base:$(VERSION) . -hub: base +generate_hub: + cd ./Hub && ./generate.sh $(VERSION) + +hub: base generate_hub cd ./Hub && docker build -t $(NAME)/hub:$(VERSION) . -nodebase: base +generate_nodebase: + cd ./NodeBase && ./generate.sh $(VERSION) + +nodebase: base generate_nodebase cd ./NodeBase && docker build -t $(NAME)/node-base:$(VERSION) . -chrome: nodebase +generate_chrome: + cd ./NodeChrome && ./generate.sh $(VERSION) + +chrome: nodebase generate_chrome cd ./NodeChrome && docker build -t $(NAME)/node-chrome:$(VERSION) . -firefox: nodebase +generate_firefox: + cd ./NodeFirefox && ./generate.sh $(VERSION) + +firefox: nodebase generate_firefox cd ./NodeFirefox && docker build -t $(NAME)/node-firefox:$(VERSION) . generate_standalone_firefox: diff --git a/NodeBase/Dockerfile.txt b/NodeBase/Dockerfile.txt new file mode 100644 index 0000000000..424b3a65a1 --- /dev/null +++ b/NodeBase/Dockerfile.txt @@ -0,0 +1,38 @@ +MAINTAINER Selenium + +ENV DEBIAN_FRONTEND noninteractive +ENV DEBCONF_NONINTERACTIVE_SEEN true + +#=================== +# Timezone settings +# Possible alternative: https://github.com/docker/docker/issues/3359#issuecomment-32150214 +#=================== +ENV TZ "US/Pacific" +RUN echo "US/Pacific" | sudo tee /etc/timezone \ + && dpkg-reconfigure --frontend noninteractive tzdata + +#============== +# VNC and Xvfb +#============== +RUN apt-get update -qqy \ + && apt-get -qqy install \ + xvfb \ + && rm -rf /var/lib/apt/lists/* + +#============================== +# Scripts to run Selenium Node +#============================== +COPY entry_point.sh /opt/bin/entry_point.sh +RUN chmod +x /opt/bin/entry_point.sh + +#============================ +# Some configuration options +#============================ +ENV SCREEN_WIDTH 1360 +ENV SCREEN_HEIGHT 1020 +ENV SCREEN_DEPTH 24 +ENV DISPLAY :99.0 + +USER seluser + +CMD ["/opt/bin/entry_point.sh"] diff --git a/NodeBase/generate.sh b/NodeBase/generate.sh new file mode 100755 index 0000000000..19987b5128 --- /dev/null +++ b/NodeBase/generate.sh @@ -0,0 +1,5 @@ +#!/bin/bash +VERSION=$1 + +echo FROM selenium/base:$VERSION > ./Dockerfile +cat ./Dockerfile.txt >> ./Dockerfile diff --git a/NodeChrome/Dockerfile.txt b/NodeChrome/Dockerfile.txt new file mode 100644 index 0000000000..38d854a3e3 --- /dev/null +++ b/NodeChrome/Dockerfile.txt @@ -0,0 +1,39 @@ +MAINTAINER Selenium + +USER root + +#=============== +# Google Chrome +#=============== +RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ + && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list \ + && apt-get update -qqy \ + && apt-get -qqy install \ + google-chrome-stable \ + && rm /etc/apt/sources.list.d/google-chrome.list \ + && rm -rf /var/lib/apt/lists/* + +#================== +# Chrome webdriver +#================== +ENV CHROME_DRIVER_VERSION 2.15 +RUN wget --no-verbose -O /tmp/chromedriver_linux64.zip http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip \ + && rm -rf /opt/selenium/chromedriver \ + && unzip /tmp/chromedriver_linux64.zip -d /opt/selenium \ + && rm /tmp/chromedriver_linux64.zip \ + && mv /opt/selenium/chromedriver /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION \ + && chmod 755 /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION \ + && ln -fs /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION /usr/bin/chromedriver + +#======================== +# Selenium Configuration +#======================== +COPY config.json /opt/selenium/config.json + +#================================= +# Chrome Launch Script Modication +#================================= +COPY chrome_launcher.sh /opt/google/chrome/google-chrome +RUN chmod +x /opt/google/chrome/google-chrome + +USER seluser diff --git a/NodeChrome/generate.sh b/NodeChrome/generate.sh new file mode 100755 index 0000000000..fa4e399df1 --- /dev/null +++ b/NodeChrome/generate.sh @@ -0,0 +1,5 @@ +#!/bin/bash +VERSION=$1 + +echo FROM selenium/node-base:$VERSION > ./Dockerfile +cat ./Dockerfile.txt >> ./Dockerfile diff --git a/NodeFirefox/Dockerfile.txt b/NodeFirefox/Dockerfile.txt new file mode 100644 index 0000000000..d776ccb9a7 --- /dev/null +++ b/NodeFirefox/Dockerfile.txt @@ -0,0 +1,18 @@ +MAINTAINER Selenium + +USER root + +#========= +# Firefox +#========= +RUN apt-get update -qqy \ + && apt-get -qqy --no-install-recommends install \ + firefox \ + && rm -rf /var/lib/apt/lists/* + +#======================== +# Selenium Configuration +#======================== +COPY config.json /opt/selenium/config.json + +USER seluser diff --git a/NodeFirefox/generate.sh b/NodeFirefox/generate.sh new file mode 100755 index 0000000000..fa4e399df1 --- /dev/null +++ b/NodeFirefox/generate.sh @@ -0,0 +1,5 @@ +#!/bin/bash +VERSION=$1 + +echo FROM selenium/node-base:$VERSION > ./Dockerfile +cat ./Dockerfile.txt >> ./Dockerfile From 5135b9bd25435bcc9d63c684fd1e62baf1c0f748 Mon Sep 17 00:00:00 2001 From: rubytester Date: Tue, 9 Jun 2015 17:29:19 -0500 Subject: [PATCH 2/2] cleanup template generation - rename Dockerfile.txt makes explicit this is template folder prevents accidental docker build on this folder - remove template text from polluting final Dockerfile - add missing MAINTAINER field - generate_all convenience to update Dockerfiles without running docker build --- Makefile | 17 +++++++++++++++++ NodeChromeDebug/Dockerfile | 1 - NodeDebug/{Dockerfile => Dockerfile.txt} | 1 - NodeDebug/README.md | 2 +- NodeDebug/generate.sh | 2 +- NodeFirefoxDebug/Dockerfile | 1 - Standalone/{Dockerfile => Dockerfile.txt} | 2 +- Standalone/README.md | 2 +- Standalone/generate.sh | 2 +- StandaloneChrome/Dockerfile | 2 +- StandaloneDebug/README.md | 2 +- StandaloneDebug/generate.sh | 2 +- StandaloneDebugChrome/Dockerfile | 1 - StandaloneDebugFirefox/Dockerfile | 1 - StandaloneFirefox/Dockerfile | 2 +- 15 files changed, 26 insertions(+), 14 deletions(-) rename NodeDebug/{Dockerfile => Dockerfile.txt} (93%) rename Standalone/{Dockerfile => Dockerfile.txt} (74%) diff --git a/Makefile b/Makefile index 44fa51d884..e16f2025c8 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,18 @@ PLATFORM := $(shell uname -s) all: hub chrome firefox chromedebug firefoxdebug standalone_chrome standalone_firefox standalone_debug_chrome standalone_debug_firefox +generate_all: \ + generate_hub \ + generate_nodebase \ + generate_chrome \ + generate_firefox \ + generate_chromedebug \ + generate_firefoxdebug \ + generate_standalone_firefox \ + generate_standalone_chrome \ + generate_standalone_debug_firefox \ + generate_standalone_debug_chrome + build: all ci: build test @@ -118,6 +130,11 @@ test: ci \ firefox \ firefoxdebug \ + generate_all \ + generate_hub \ + generate_nodebase \ + generate_chrome \ + generate_firefox \ generate_chromedebug \ generate_firefoxdebug \ generate_standalone_chrome \ diff --git a/NodeChromeDebug/Dockerfile b/NodeChromeDebug/Dockerfile index b6d9921e59..4366d4c457 100644 --- a/NodeChromeDebug/Dockerfile +++ b/NodeChromeDebug/Dockerfile @@ -1,5 +1,4 @@ FROM selenium/node-chrome:2.46.0 -#FROM selenium/node-*:2.46.0 Proper FROM attr will be applied throuh generate.sh MAINTAINER Selenium USER root diff --git a/NodeDebug/Dockerfile b/NodeDebug/Dockerfile.txt similarity index 93% rename from NodeDebug/Dockerfile rename to NodeDebug/Dockerfile.txt index c2410abbbb..93ef077e7c 100644 --- a/NodeDebug/Dockerfile +++ b/NodeDebug/Dockerfile.txt @@ -1,4 +1,3 @@ -#FROM selenium/node-*:2.46.0 Proper FROM attr will be applied throuh generate.sh MAINTAINER Selenium USER root diff --git a/NodeDebug/README.md b/NodeDebug/README.md index bc201c0b97..f043be4f3f 100644 --- a/NodeDebug/README.md +++ b/NodeDebug/README.md @@ -1,3 +1,3 @@ # Debug image template -This folder is not meant to be build directly from the `docker build .` It only stands as a template for creating debug images derived from Selenium Node Browser images. Note usage in the Makefile at the root of this repo. +This folder serves as a template for creating debug images derived from Selenium Node Browser images. Note usage in the Makefile at the root of this repo. diff --git a/NodeDebug/generate.sh b/NodeDebug/generate.sh index c61a588ecd..c8fcc7a61e 100755 --- a/NodeDebug/generate.sh +++ b/NodeDebug/generate.sh @@ -8,7 +8,7 @@ rm -rf $FOLDER mkdir -p $FOLDER echo FROM selenium/$BASE:$VERSION > $FOLDER/Dockerfile -cat ./Dockerfile >> $FOLDER/Dockerfile +cat ./Dockerfile.txt >> $FOLDER/Dockerfile cat ../NodeBase/entry_point.sh \ | sed 's/^xvfb-run/sudo -E -i -u seluser \\\ diff --git a/NodeFirefoxDebug/Dockerfile b/NodeFirefoxDebug/Dockerfile index 00b733ed01..03fe4eb133 100644 --- a/NodeFirefoxDebug/Dockerfile +++ b/NodeFirefoxDebug/Dockerfile @@ -1,5 +1,4 @@ FROM selenium/node-firefox:2.46.0 -#FROM selenium/node-*:2.46.0 Proper FROM attr will be applied throuh generate.sh MAINTAINER Selenium USER root diff --git a/Standalone/Dockerfile b/Standalone/Dockerfile.txt similarity index 74% rename from Standalone/Dockerfile rename to Standalone/Dockerfile.txt index d8942d55be..efbbdbf6da 100644 --- a/Standalone/Dockerfile +++ b/Standalone/Dockerfile.txt @@ -1,4 +1,4 @@ -#FROM selenium/node-*:2.46.0 Proper FROM attr will be applied throuh generate.sh +MAINTAINER Selenium USER root diff --git a/Standalone/README.md b/Standalone/README.md index fa1e317ec3..a0d2bd2a14 100644 --- a/Standalone/README.md +++ b/Standalone/README.md @@ -1,3 +1,3 @@ # Debug image template -This folder is not meant to be build directly from the `docker build .` It only stands as a template for creating standalone server images derived from Selenium Node Browser images. Note usage in the Makefile at the root of this repo. +This folder servers as a template for creating standalone server images derived from Selenium Node Browser images. Note usage in the Makefile at the root of this repo. diff --git a/Standalone/generate.sh b/Standalone/generate.sh index 42e9e024ed..b3dbab3813 100755 --- a/Standalone/generate.sh +++ b/Standalone/generate.sh @@ -8,7 +8,7 @@ rm -rf $FOLDER mkdir -p $FOLDER echo FROM selenium/$BASE:$VERSION > $FOLDER/Dockerfile -cat ./Dockerfile >> $FOLDER/Dockerfile +cat ./Dockerfile.txt >> $FOLDER/Dockerfile cp ./entry_point.sh $FOLDER diff --git a/StandaloneChrome/Dockerfile b/StandaloneChrome/Dockerfile index 8237fd9678..0018cab3fa 100644 --- a/StandaloneChrome/Dockerfile +++ b/StandaloneChrome/Dockerfile @@ -1,5 +1,5 @@ FROM selenium/node-chrome:2.46.0 -#FROM selenium/node-*:2.46.0 Proper FROM attr will be applied throuh generate.sh +MAINTAINER Selenium USER root diff --git a/StandaloneDebug/README.md b/StandaloneDebug/README.md index 9b0070b276..7e14068e78 100644 --- a/StandaloneDebug/README.md +++ b/StandaloneDebug/README.md @@ -1,3 +1,3 @@ # Debug image template -This folder is not meant to be build directly from the `docker build .` It only stands as a template for creating standalone server debug images. Note usage in the Makefile at the root of this repo. +This folder serves as a template for creating standalone server debug images. Note usage in the Makefile at the root of this repo. diff --git a/StandaloneDebug/generate.sh b/StandaloneDebug/generate.sh index 5598494fe5..9500663155 100755 --- a/StandaloneDebug/generate.sh +++ b/StandaloneDebug/generate.sh @@ -8,7 +8,7 @@ rm -rf $FOLDER mkdir -p $FOLDER echo FROM selenium/$BASE:$VERSION > $FOLDER/Dockerfile -cat ../NodeDebug/Dockerfile >> $FOLDER/Dockerfile +cat ../NodeDebug/Dockerfile.txt >> $FOLDER/Dockerfile cp ./entry_point.sh $FOLDER diff --git a/StandaloneDebugChrome/Dockerfile b/StandaloneDebugChrome/Dockerfile index 7f02d7cba6..0fbd54e28d 100644 --- a/StandaloneDebugChrome/Dockerfile +++ b/StandaloneDebugChrome/Dockerfile @@ -1,5 +1,4 @@ FROM selenium/standalone-chrome:2.46.0 -#FROM selenium/node-*:2.46.0 Proper FROM attr will be applied throuh generate.sh MAINTAINER Selenium USER root diff --git a/StandaloneDebugFirefox/Dockerfile b/StandaloneDebugFirefox/Dockerfile index c7de40c28c..0ac211b4b4 100644 --- a/StandaloneDebugFirefox/Dockerfile +++ b/StandaloneDebugFirefox/Dockerfile @@ -1,5 +1,4 @@ FROM selenium/standalone-firefox:2.46.0 -#FROM selenium/node-*:2.46.0 Proper FROM attr will be applied throuh generate.sh MAINTAINER Selenium USER root diff --git a/StandaloneFirefox/Dockerfile b/StandaloneFirefox/Dockerfile index 385b7812b9..d675a006a1 100644 --- a/StandaloneFirefox/Dockerfile +++ b/StandaloneFirefox/Dockerfile @@ -1,5 +1,5 @@ FROM selenium/node-firefox:2.46.0 -#FROM selenium/node-*:2.46.0 Proper FROM attr will be applied throuh generate.sh +MAINTAINER Selenium USER root