简体   繁体   中英

How to configure a Jenkinsfile to build docker image and push it to a private registry

I have two questions. But maybe I don't know how to add tags for this question so that I added the tag for both. First question is related to Jenkins plugin usage to bake and push docker image using this . Below is my Jenkinsfile script. I finished building jar file in target directory. Then I want to run this docker plugin to bake with this artifact. As you know, we needed to have a Dockerfile so I put it in a root directory where git cloned the source. How I configure this? I don't know how to this. If I run below, Jenkins told that there is no steps.

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()
                    }
                }
            }




    }
}

UPDATE this is another Jenkins Pipeline Syntax sniffet generator. But it doesn't work neither.

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 is like the below. If I try baking image in my local, I got the following error.

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 

You are writing your .jar to /usr/myapp . Which means that /usr/myapp will be the jar file and not a directory, resulting in that error. Change your docker copy line to COPY ./target/spring-petclinic-1.5.1.jar /usr/myapp/ (with the trailing slash) and your Dockerfile should work.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM