Docker is used to eliminating “works on my machine” problems when collaborating on code with co-workers. We use Docker to run and manage apps side-by-side in isolated containers to get better compute density. Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. By integrating regularly, you can detect errors quickly, and locate them more easily. Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time. It aims at building, testing, and releasing software faster and more frequently. The approach helps reduce the cost, time, and risk of delivering changes by allowing for more incremental updates to applications in production.
Building a CI/CD Pipeline is the solution we came up with. A continuous integration and deployment pipeline(CD/CI) is such an important aspect of a software project. It saves a ton of manual, error-prone deployment work. It results in higher quality software for continuous integration, automated tests, and code metrics.
Write a Python app -> Add some automated tests for the program -> Push code to GitHub -> Setup Travis CI to continuously run automated tests -> Turn the Python program into a web app -> Create a Docker image for the web app -> Push the Docker image to Docker Hub -> Deploy the Docker image to Heroku