Search code examples
dockerjenkinsjenkins-pipelinejenkins-plugins

Docker: not found when running cmds in jenkinsfile


I am new to docker and CI. I am trying to create a jenkinsfile that would build and test my application, then build a docker image with the Dockerfile i've composed and then push it into AWS ECR. The steps I am stuck on is building an image with docker, i receive and error message docker: not found. I downloaded docker plug-in and configured it in the global tool configuration tab. Am i not adding it into tools correctly?

There was another post wear you could use kubernetes to do that however kubernetes no longer supports docker.

image of how i configured docker in global tools config: global tool config

error

/var/jenkins_home/workspace/client-pipeline_feature-jenkins@tmp/durable-41220eb0/script.sh: 1: /var/jenkins_home/workspace/client-pipeline_feature-jenkins@tmp/durable-41220eb0/script.sh: docker: not found

error with permission to sock

def gv
containerVersion = "1.0"
appName = "foodcore"
imageName = appName + ":" + version
pipeline {
    agent any
    environment {
        CI = 'true'
    }
    tools {
      nodejs "node"
      docker "docker"
    }
    stages {
        stage("init") {
            steps {
                script {
                   gv = load "script.groovy"
                   CODE_CHANGES = gv.getGitChanges()
                }
            }
        }
        stage("build frontend") {
            steps {
                dir("client") {
                    sh 'npm install'
                }
            }
        }
        stage("build backend") {
            steps {
                dir("server") {
                    sh 'npm install'
                }
            }
        }
        stage("test") {
            when {
                expression {
                    script {
                        CODE_CHANGES == false
                    }
                }
            }
            steps {
                dir("client") {
                    sh 'npm test'
                }
            }
        }
        stage("build docker image") {
            when {
                expression {
                    script {
                       env.BRANCH_NAME.toString().equals('Main') && CODE_CHANGES == false
                    }
                }
            }
            steps {
                sh "docker build -t ${imageName} ."
            }
        }
        stage("push docker image") {
            when {
                expression {
                    env.BRANCH_NAME.toString().equals('Main')
                }
            }
            steps {
                sh 'aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin repoURI'
                sh 'docker tag foodcore:latest ...repoURI
                sh 'docker push repoURI'
            }
        }
    }   
}

Solution

  • Use echo hello world to make...