Jenkins Декларативный конвейер докера: команда не найдена - PullRequest
0 голосов
/ 29 июня 2019

Я установил Jenkins локально на моей машине. Я извлекаю некоторый исходный код из моего репозитория github, в котором есть корневой файл Docker. Я хочу создать образ докера и отправить его в концентратор докеров, но моя сборка завершается неудачно со следующим сообщением ...

docker build -f myapp-web:latest . \n
/Users/Shared/Jenkins/Home/workspace/MyApp@tmp/durable-ee9851e9/script.sh: line 1: docker: command not found 
pipeline {

    agent any

    tools {
        maven 'maven_3.6.1'
        jdk 'jdk8'
    }

    stages {
        stage('Build') {
            steps {
                withMaven(maven: 'maven_3.6.1', mavenSettingsConfig: '5d7a8237-6d6a-4189-a907-518900dc7755') {
                    sh "mvn clean install "
                }
            }
        }
        stage('Build Image') {
            steps {
                script {
                    sh 'docker build -f myapp-web:latest .'
                }
            }
        }
        stage('Deploy Image') {
            steps {
                withDockerRegistry([credentialsId: "docker-hub", url: ""]) {
                    sh 'docker push myapp-web:latest'
                }
            }
        }
    }
}

Docker установлен и работает на моем локальном компьютере, а Jenkins настроен с помощью следующего плагина Докерский трубопровод Плагин Docker

Любые идеи с благодарностью

1 Ответ

1 голос
/ 29 июня 2019

Если вы получаете docker: command not found через конвейер, хотя он уже установлен на том же узле, где работает конвейер, вам нужно убедиться, что конвейер читает правильную среду $PATH, в которой должен существовать двоичный файл докера.

Для второй проблемы, о которой вы упомянули

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

, вам нужно добавить пользователя, который используется в конвейере, в группу Docker, чтобы он мог запускать команды Docker, используя:

usermod -aG docker $USER
...