Unleash the combination of Docker and Jenkins in order to enhance the DevOps workflow
About This Book
- Build reliable and secure applications using Docker containers.
- Create a complete Continuous Delivery pipeline using Docker, Jenkins, and Ansible.
- Deliver your applications directly on the Docker Swarm cluster.
- Create more complex solutions using multi-containers and database migrations.
Who This Book Is For
This book is indented to provide a full overview of deep learning. From the beginner in deep learning and artificial intelligence to the data scientist who wants to become familiar with Theano and its supporting libraries, or have an extended understanding of deep neural nets.
Some basic skills in Python programming and computer science will help, as well as skills in elementary algebra and calculus.
What You Will Learn
- Get to grips with docker fundamentals and how to dockerize an application for the Continuous Delivery process
- Configure Jenkins and scale it using Docker-based agents
- Understand the principles and the technical aspects of a successful Continuous Delivery pipeline
- Create a complete Continuous Delivery process using modern tools: Docker, Jenkins, and Ansible
- Write acceptance tests using Cucumber and run them in the Docker ecosystem using Jenkins
- Create multi-container applications using Docker Compose
- Managing database changes inside the Continuous Delivery process and understand effective frameworks such as Cucumber and Flyweight
- Build clustering applications with Jenkins using Docker Swarm
- Publish a built Docker image to a Docker Registry and deploy cycles of Jenkins pipelines using community best practices
The combination of Docker and Jenkins improves your Continuous Delivery pipeline using fewer resources. It also helps you scale up your builds, automate tasks and speed up Jenkins performance with the benefits of Docker containerization.
This book will explain the advantages of combining Jenkins and Docker to improve the continuous integration and delivery process of app development. It will start with setting up a Docker server and configuring Jenkins on it. It will then provide steps to build applications on Docker files and integrate them with Jenkins using continuous delivery processes such as continuous integration, automated acceptance testing, and configuration management.
Moving on you will learn how to ensure quick application deployment with Docker containers along with scaling Jenkins using Docker Swarm. Next, you will get to know how to deploy applications using Docker images and testing them with Jenkins.
By the end of the book, you will be enhancing the DevOps workflow by integrating the functionalities of Docker and Jenkins.
Style and approach
The book is aimed at DevOps Engineers, developers and IT Operations who want to enhance the DevOps culture using Docker and Jenkins.
Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the code file.
Table of Contents
Introducing Continuous Delivery
- What is Continuous Delivery?
- The automated deployment pipeline
- Prerequisites to Continuous Delivery
Building the Continuous Delivery process
- Introducing tools
- Creating a complete Continuous Delivery system
- What is Docker?
- Docker installation
- Running Docker hello world>
- Docker applications
- Building images
- Docker container states
- Docker networking
- Using Docker volumes
- Using names in Docker
- Docker cleanup
- Docker commands overview
- What is Jenkins?
- Jenkins installation
- Jenkins hello world
- Jenkins architecture
- Communication protocols
- Permanent agents
- Permanent Docker agents
- Jenkins Swarm agents
- Dynamically provisioned Docker agents
- Understanding dynamically provisioned Docker agents
- Testing agents
- Custom Jenkins images
- Configuration and management
Continuous Integration Pipeline
- Introducing pipelines
- Unit test
- Code quality stages
- Triggers and notifications
- Team development strategies
Automated Acceptance Testing
- Introducing acceptance testing
- Docker registry
- Acceptance test in pipeline
- Docker Compose
Acceptance testing with Docker Compose
- Using a multi-container environment
- Method 1 – Jenkins-first acceptance testing
- Method 2 – Docker-first acceptance testing
- Comparing method 1 and method 2
- Writing acceptance tests
Configuration Management with Ansible
- Introducing configuration management
- Installing Ansible
- Using Ansible
- Deployment with Ansible
- Ansible with Docker
Continuous Delivery Pipeline
- Environments and infrastructure
- Nonfunctional testing
- Application versioning
- Complete Continuous Delivery pipeline
Clustering with Docker Swarm
- Server clustering
- Docker Swarm in practice
- Advanced Docker Swarm
- Docker Compose with Docker Swarm
- Alternative cluster management systems
- Scaling Jenkins
Advanced Continuous Delivery
Managing database changes
- Understanding schema updates
- Changing database in Continuous Delivery
- Avoiding shared database
- Preparing test data
- Pipeline patterns
- Release patterns
- Working with legacy systems
- Practice 1 – own process within the team!
- Practice 2 – automate everything!
- Practice 3 – version everything!
- Practice 4 – use business language for acceptance tests!
- Practice 5 – be ready to roll back!
- Practice 6 – don't underestimate the impact of people
- Practice 7 – build in traceability!
- Practice 8 – integrate often!
- Practice 9 – build binaries only once!
- Practice 10 – release often!
- Managing database changes
- Title: Continuous Delivery with Docker and Jenkins
- Release date: August 2017
- Publisher(s): Packt Publishing
- ISBN: 9781787125230