Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何配置Jenkins文件以构建docker映像并将其推送到私有注册表_Docker_Jenkins_Jenkins Pipeline - Fatal编程技术网

如何配置Jenkins文件以构建docker映像并将其推送到私有注册表

如何配置Jenkins文件以构建docker映像并将其推送到私有注册表,docker,jenkins,jenkins-pipeline,Docker,Jenkins,Jenkins Pipeline,我有两个问题。但也许我不知道如何为这个问题添加标签,所以我为这两个问题都添加了标签。第一个问题是关于Jenkins插件在烘焙和推送docker图像时的用法。下面是我的Jenkinsfile脚本。我在目标目录中完成了jar文件的构建。然后我想运行这个docker插件来烘焙这个工件。正如您所知,我们需要一个Dockerfile,所以我将它放在git克隆源代码的根目录中。我如何配置它?我不知道该怎么做。如果我在下面跑,詹金斯告诉我没有台阶 pipeline { agent any st

我有两个问题。但也许我不知道如何为这个问题添加标签,所以我为这两个问题都添加了标签。第一个问题是关于Jenkins插件在烘焙和推送docker图像时的用法。下面是我的Jenkinsfile脚本。我在目标目录中完成了jar文件的构建。然后我想运行这个docker插件来烘焙这个工件。正如您所知,我们需要一个Dockerfile,所以我将它放在git克隆源代码的根目录中。我如何配置它?我不知道该怎么做。如果我在下面跑,詹金斯告诉我没有台阶

pipeline {
    agent any
    stages {
        stage('build') {
            steps {
                git branch: 'master', credentialsId: 'e.joe-gitlab', url: 'http://70.121.224.108/gitlab/cicd/spring-petclinic.git'
                sh 'mvn clean package'
            }
        }
        stage('verify') {
            steps {
                sh 'ls -alF target'
            }
        }

        stage('build-docker-image') {
                steps {
                    docker.withRegistry('https://sds.redii.net/', 'redii-e.joe') {
                        def app = docker.build("sds.redii.net/e-joe/spring-pet-clinic-demo:v1",'.')
                        app.push()
                    }
                }
            }




    }
}
更新 这是另一个Jenkins管道语法嗅探生成器。但它也不起作用

pipeline {
    agent any
    stages {
        stage('build') {
            steps {
                git branch: 'master', credentialsId: 'e.joe-gitlab', url: 'http://70.121.224.108/gitlab/cicd/spring-petclinic.git'
                sh 'mvn clean package'
            }
        }
        stage('verify') {
            steps {
                sh 'ls -alF target'
            }
        }        
        stage('docker') {
                withDockerRegistry([credentialsId: 'redii-e.joe', url: 'https://sds.redii.net']) {
                    def app = docker.build("sds.redii.net/e-joe/spring-pet-clinic-demo:v1",'.')
                    app.push()
                }
        }
    }
}
Dokerfile如下所示。如果我尝试在本地烘焙图像,则会出现以下错误

container_linux.go:247: starting container process caused "chdir to cwd (\"/usr/myapp\") set in config.json failed: not a directory"
oci runtime error: container_linux.go:247: starting container process caused "chdir to cwd (\"/usr/myapp\") set in config.json failed: not a directory"
: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
DockerFile

FROM openjdk:7
COPY ./target/spring-petclinic-1.5.1.jar /usr/myapp
WORKDIR /usr/myapp
RUN     java spring-petclinic-1.5.1.jar 

您正在将.jar写入/usr/myapp。这意味着/usr/myapp将是jar文件而不是目录,从而导致该错误。将您的行更改为COPY./target/spring-petclinic-1.5.1.jar/usr/myapp/,带有尾随斜杠,Dockerfile应该可以工作