Jenkins Slave with Docker Engine and Docker Compose inside (Jenkins Swarm Plugin)
Docker images for Jenkins Slave with Docker Engine and Docker Compose inside.
Works best in combination with eeacms/jenkins-master
This image is generic, thus you can obviously re-use it within your non-related EEA projects.
Supported tags and respective Dockerfile links
:1.13-3.6.2(Dockerfile) - Docker 1.13.1, Docker-Compose 1.17.0, Swarm Client 3.6
See older versions
Base docker image
Start Jenkins master:
$ docker run --name=jenkins \ -p 8080:8080 \ -p 50000:50000 \ eeacms/jenkins-master
Start Docker engine server:
$ docker run --name=docker13 \ --privileged=true \ docker:1.13-dind
Start Jenkins slave:
$ docker run --name=worker \ --link=docker13 \ -e DOCKER_HOST=tcp://docker13:2375 \ eeacms/jenkins-slave-dind:1.13
You can also bind
/var/run/docker.sock from host for more stable Jenkins Docker-in-Docker slave:
$ docker run --name=worker \ -v /var/run/docker.sock:/var/run/docker.sock \ eeacms/jenkins-slave-dind:1.13
See base image eeacms/jenkins-slave for more options.
Supported environment variables
DOCKER_HOSTDocker engine server
address:portto be used to run Docker related jobs
JENKINS_USERjenkins user to be used to connect slaves to Jenkins master. Make sure that this user has the proper rights to connect slaves and run jenkins jobs.
JENKINS_PASSjenkins user password
JAVA_OPTSYou might need to customize the JVM running Jenkins slave, typically to pass system properties or tweak heap memory settings. Use JAVA_OPTS environment variable for this purpose.
JENKINS_NAMEName of the slave
JENKINS_DESCRIPTIONDescription to be put on the slave
JENKINS_EXECUTORSNumber of executors. Default is equal with the number of available CPUs
JENKINS_LABELSWhitespace-separated list of labels to be assigned for this slave. Multiple options are allowed.
JENKINS_RETRYNumber of retries before giving up. Unlimited if not specified.
JENKINS_MODEThe mode controlling how Jenkins allocates jobs to slaves. Can be either 'normal' (utilize this slave as much as possible) or 'exclusive' (leave this machine for tied jobs only). Default is normal.
JENKINS_MASTERThe complete target Jenkins URL like 'http://jenkins-server'. If this option is specified, auto-discovery will be skipped
JENKINS_TUNNELConnect to the specified host and port, instead of connecting directly to Jenkins. Useful when connection to Hudson needs to be tunneled. Can be also HOST: or :PORT, in which case the missing portion will be auto-configured like the default behavior
JENKINS_TOOL_LOCATIONSWhitespace-separated list of tool locations to be defined on this slave. A tool location is specified as 'toolName:location'
JENKINS_NO_RETRY_AFTER_CONNECTEDDo not retry if a successful connection gets closed.
JENKINS_AUTO_DISCOVERY_ADDRESSUse this address for udp-based auto-discovery (default 255.255.255.255)
JENKINS_DISABLE_SSL_VERIFICATIONDisables SSL verification in the HttpClient.
JENKINS_OPTSYou can provide multiple parameters via this environment like:
-e JENKINS_OPTS="-labels docker -mode exclusive"
DOCKERHUB_USERdockerhub user to be used to push images to dockerhub. If missing, the .m2/settings.xml required for pushing images will not be created.
DOCKERHUB_PASSdockerhub user password
Copyright and license
The Initial Owner of the Original Code is European Environment Agency (EEA).
All Rights Reserved.
The Original Code is free software;
you can redistribute it and/or modify it under the terms of the GNU
General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later