This image contains a "Docker Workflow" Job that demonstrates Jenkins Workflow integration with Docker via CloudBees Docker Workflow plugin.
docker run --rm -p 8080:8080 -p 8081:8081 -p 8022:22 --add-host=docker.example.com:127.0.0.1 -ti --privileged jenkinsci/docker-workflow-demo
The "Docker Workflow" Job simply does the following:
- Gets the Spring Pet Clinic demonstration application code from GitHub.
- Builds the Pet Clinic application in a Docker container.
- Builds a runnable Pet Clinic application Docker image.
- Runs a Pet Clinic app container (from the Pet Clinic application Docker image) + a second maven3 container that runs automated tests against the Pet Clinic app container.
- The 2 containers are linked, allowing the test container to fire requests at the Pet Clinic app container.
The "Docker Workflow" Job demonstrates how to use the docker
DSL:
- Use
docker.image
to define a DSLImage
object (not to be confused withbuild
) that can then be used to perform operations on a Docker image:
- use
Image.inside
to run a Docker container and execute commands in it. The build workspace is mounted as the working directory in the container. - use
Image.run
to run a Docker container in detached mode, returning a DSLContainer
object that can be later used to stop the container (viaContainer.stop
).
- Use
docker.build
to build a Docker image from aDockerfile
, returning a DSLImage
object that can then be used to perform operations on that image (as above).
The docker
DSL supports some additional capabilities not shown in the "Docker Workflow" Job:
- Use the
docker.withRegistry
anddocker.withServer
to register endpoints for the Docker registry and host to be used when executing docker commands.
docker.withRegistry(<registryUrl>, <registryCredentialsId>)
docker.withServer(<serverUri>, <serverCredentialsId>)
- Use the
Image.pull
to pull Docker image layers into the Docker host cache. - Use the
Image.push
to push a Docker image to the associated Docker Registry. Seedocker.withRegistry
above.