docker compose with selenium
Running a local setup with selenium hub with Firefox
and Google Chrome
nodes using docker-compose . Using docker-compose
makes the setup even more convenient the using the docker --link
commands. Starting and stoping the setup is just easy. Scaling up and down the number of Chrome and Firefox nodes is just a command to.
docker-compose
builds a setup based on a compose file that is a yaml file. Creating the setup file for a selenium hub with two nodes can look like this.
Selenium hub, the web ui is exposed on port 4444 on the docker server. If you are using a local setup in OS X
you can get the ip with boot2docker ip | pbcopy
.
hub:
image: selenium/hub
ports:
- "4444:4444"
Firefox selenium node head less
firefox:
image: selenium/node-firefox
links:
- hub
expose:
- "5555"
Google Chrome selenium node head less
chrome:
image: selenium/node-chrome
links:
- hub
expose:
- "5555"
to run the setup save it to a file named docker-compose.yml
. Stand in the same folder as the compose file. run the following command to start the setup and send it to the background. If you like to run it in foreground remove the -d
flag. If you don’t have the images docker-compose
will pull the images like normal with docker
jone@doe:~$ docker-compose up -d
Recreating selenium_hub_1...
Recreating selenium_firefox_1...
Recreating selenium_chrome_1...
Now lets look and see if the docker images are running
jone@doe:~$ docker-compose ps
Name Command State Ports
----------------------------------------------------------
selenium_chrome_1 /opt/bin/entry_point.sh Up 5555/tcp
selenium_firefox_1 /opt/bin/entry_point.sh Up 5555/tcp
selenium_hub_1 /opt/bin/entry_point.sh Up 0.0.0.0:4444->4444/tcp
Lest assume that you like to scale the number of Firefox and Chrome nodes to two of each. You can use the scale
command with docker-compose
. The name of the nodes are used to scale up and down the number of docker instances that are running.
jone@doe:~$ docker-compose scale firefox=2 chrome=2
Creating selenium_firefox_2...
Starting selenium_firefox_2...
Creating selenium_chrome_2...
Starting selenium_chrome_2...
Now lets stop the setup. using the stop
command with docker-compose
jone@doe:~$ docker-compose stop
Stopping selenium_chrome_2...
Stopping selenium_chrome_1...
Stopping selenium_firefox_2...
Stopping selenium_firefox_1...
Stopping selenium_hub_1...
link to docker-compose file source