Sunday, May 3, 2020

Automate Docker builds using Jenkins - Dockerize PHP App | Containerize PHP App | Build Docker images using Jenkins

We will learn how to automate Docker builds using Jenkins. We will use PHP based application. I have already created a repo with source code + Dockerfile. The repo also have Jenkinsfile for automating the following:

- Automating builds
- Automating Docker image creation
- Automating Docker image upload
- Automating Docker container provisioning

Watch Steps in YouTube Channel:

1. Jenkins is up and running
2. Docker installed on Jenkins instance
3. Docker pipeline and Docker pipeline plug-ins are installed in Jenkins
4. user account setup in
5. Port 8086 open in security firewall rules

Step #1 - Create Credentials for Docker Hub
Go to your Jenkins where you have installed Docker as well. Go to credentials -->

Click on Global credentials
Click on Add Credentials

Now Create an entry for Docker Hub credentials

Make sure you take note of the ID as circled below:

Step # 2 - Create a scripted pipeline in Jenkins, name can be anything

Step # 3 - Copy the pipeline code from below
Make sure you change yellow highlighted section values below:
Your docker user id should be updated.
your registry credentials ID from Jenkins from step # 1 should be copied

pipeline {
    agent any 
    environment {
        //TODO # 1 --> once you sign up for Docker hub, use that user_id here
        registry = "your_docker_userid/myphp-app-may20"
        //TODO #2 - update your credentials ID after creating credentials for connecting to Docker Hub
        registryCredential = 'your_credentials_id_from_step 1_above'
        dockerImage = ''
    stages {
        stage('Cloning Git') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '', url: '']]])       
    // Building Docker images
    stage('Building image') {
        script {
          dockerImage = registry
     // Uploading Docker images into Docker Hub
    stage('Upload Image') {
         script {
            docker.withRegistry( '', registryCredential ) {
     // Stopping Docker containers for cleaner Docker run
     stage('docker stop container') {
         steps {
            sh 'docker ps -f name=myPhpContainer -q | xargs --no-run-if-empty docker container stop'
            sh 'docker container ls -a -fname=myPhpContainer -q | xargs -r docker container rm'
    // Running Docker container, make sure port 8096 is opened in 
    stage('Docker Run') {
         script {
  "-p 8086:80 --rm --name myPhpContainer")

Step # 4 - Click on Build - Build the pipeline
Once you create the pipeline and changes values per your Docker user id and credentials ID, click on 

Steps # 5 - Access PHP App
Once build is successful, go to browser and enter http://public_dns_name:8086
You should see page like below:

No comments:

Post a Comment

Top 10 DevOps Popular Tools | Popular DevOps Tools You Must Know In 2024 | Learn DevOps Tools in 2024

Here are the top 10 DevOps Tools to focus on to put your DevOps learning on a  faster track  and kick start your career quickly as a success...